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

设计模式
EN

Stack Overflow用户
提问于 2011-04-22 01:52:58
回答 2查看 254关注 0票数 1

我希望在工作中对我现有的组件做一些修改,并开始看到使用设计模式的好处。问题是,我有一些具体的例子,我正在尝试使用我在设计模式中学到的东西,并且在这样做时遇到了问题。这就是我想要做的。

我有一个现有的组件,可以监视不同软件包的性能,每个软件包都满足特定类型。即现有组件

  • 包A用于1型
  • 包B用于2型
  • 软件包C用于3型,等等.

每个包都执行一些性能监视,并有自己的数据日志、记录等。每个包现在只有一种类型。

将来我们可能会有一个新的特性

  • 包括一个分析日志。这将具有已经存在的数据日志,并在包的多个类型的that.
  • Supporting之上添加一些其他数据。type1的包A,类型1的2 (Bitype)包B,类型2 (tritype)

的包

看看这个,我认为适配器模式在这里是有用的。我可以使用现有的组件作为适配器。然后在适配器类中执行新功能。我的目标是添加两个功能的最终组件。

既然我在这里处理现有的代码,我想我应该添加一个适配器类来适应新特性。但是我有另一个想法,因为适配器是为了使一个接口与另一个接口可用。这里我有现有的接口,但我没有一个目标接口已经存在。我必须同时创建适配器和目标。所以我很困惑这个定义是否符合我的要求。

有设计模式经验的人能在这里提出你的建议吗?谢谢

这个软件是给运动员的。现行制度会追踪这些运动员的训练详情。它有一些细节,比如训练日志,他们喜欢什么品牌,个人细节等等。有一个单独的包为一种类型的运动员。运动员类型有网球运动员、高尔夫运动员、游泳运动员--运动员只能是一种类型,网球运动员或高尔夫球运动员,而不是两者兼而有之。将来还需要包括更多的功能。

  1. 来包含一个性能日志(即获取已经存在的日志并在其之上添加性能日志详细信息)。
  2. 可以有重叠的运动员兴趣,即一名运动员可以参加多项运动。一名运动员可以参加网球、金牌和游泳。

希望现在一切都清楚了。

EN

回答 2

Stack Overflow用户

发布于 2015-07-02 11:12:16

不幸的是,您无法实现这里建议的模式。你必须至少熟悉最常见的,并理解何时使用其中的每一个。可能发生的情况是,您甚至为某些特定情况创建了自己的模式。

你的描述对我来说还不太清楚,但我可以建议你看看桥的方向,试着做些如下的事情:

代码语言:javascript
复制
abstract class Sportsmen {
  ILogger logger;
  List<IPackage> packages;
  List<IInterest> interests;
}

interface IPackage {
  IList<ISomeType> SupportingTypes {get;set; }
}

我向你推荐一本关于模式:http://gameprogrammingpatterns.com/的免费在线书。

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2015-08-07 01:27:26

对于Decorator模式来说,这看起来是一个很好的例子。

您可以有一个抽象数据记录器,您可以从中派生出初始包A、B、C等。此外,您还可以创建一个“装饰器”,它是从基本数据记录器派生出来的抽象类,并且有一个基数据记录器作为它的成员。

您可以在此成员数据表提供的功能之上构建,并将其公开为此装饰器的功能。(例如,LogData方法的AnalysisDecorator除了记录数据外,还会记录一些分析信息),您可以为要添加的每个功能创建一个装饰器。

现在,如果您想向包A添加一些额外的功能,您可以使用所需功能的装饰器包装它。这样,您就可以将任何添加的功能组合到基本包中。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5751564

复制
相关文章

相似问题

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