首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用单例模式改进设计

用单例模式改进设计
EN

Software Engineering用户
提问于 2017-11-26 08:57:51
回答 1查看 226关注 0票数 -2

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

目前,我计划将此功能交给另一个单例类模板OnlineSynchronisation,以不同的介质类型,从适当的在线源获取适当的属性。

这个计划有意义吗?还是有更好的方法?如果只有一种媒体,我将只使用静态方法创建OnlineSynchronisation,因为不需要单独的实例。但是updateMedium方法需要适应不同的来源(例如,如果媒体是电影,则从imdb.com获取属性)。

编辑@CandiedOrange评论中建议的策略模式看起来很有希望。结合@Bart的回答和评论,我将放弃使用单例模式的意图。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2017-11-26 10:28:38

不,你的计划没有意义。

首先,您没有提出任何争论,为什么只有一个OnlineSynchronization实例。这就是使一个类成为Singleton的意思。如果有多个单例实例,则程序逻辑中会出现严重错误。

其次,设计中的箭头与类中的属性和操作不匹配。根据箭头,OnlineSynchronization保存和管理Medium实例,但根据属性,情况正好相反(这也与使用Singleton不一致)。

这个对我来说有意义的计划很接近你的特质所暗示的:

  • (抽象的) Medium类持有(拥有;组合)一个OnlineSynchronization实例。
  • 不使用单例模式。
  • 有一个SynchronizationSource类的层次结构,用于处理各种源提供的API。
票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/361282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档