我想要创建一个媒体管理工具,我试图为它绘制一个适当的UML类图。该工具应保存不同媒体类型(电影、音乐等)的集合。它继承了一个基本的中介类。另外,每种媒体都有不同的属性(例如翻译、导演、.)。我计划从网上获取有关媒体的信息,以自动补充丢失的属性。
目前,我计划将此功能交给另一个单例类模板OnlineSynchronisation,以不同的介质类型,从适当的在线源获取适当的属性。

这个计划有意义吗?还是有更好的方法?如果只有一种媒体,我将只使用静态方法创建OnlineSynchronisation,因为不需要单独的实例。但是updateMedium方法需要适应不同的来源(例如,如果媒体是电影,则从imdb.com获取属性)。
编辑@CandiedOrange评论中建议的策略模式看起来很有希望。结合@Bart的回答和评论,我将放弃使用单例模式的意图。
发布于 2017-11-26 10:28:38
不,你的计划没有意义。
首先,您没有提出任何争论,为什么只有一个OnlineSynchronization实例。这就是使一个类成为Singleton的意思。如果有多个单例实例,则程序逻辑中会出现严重错误。
其次,设计中的箭头与类中的属性和操作不匹配。根据箭头,OnlineSynchronization保存和管理Medium实例,但根据属性,情况正好相反(这也与使用Singleton不一致)。
这个对我来说有意义的计划很接近你的特质所暗示的:
Medium类持有(拥有;组合)一个OnlineSynchronization实例。SynchronizationSource类的层次结构,用于处理各种源提供的API。https://softwareengineering.stackexchange.com/questions/361282
复制相似问题