Design patterns 设计模式实例

Design patterns 设计模式实例,design-patterns,Design Patterns,我希望在工作中对现有组件进行一些更改,并开始看到使用设计模式的优势。问题是我有一些具体的例子,我试图使用我在设计模式中学到的东西,但在这样做时遇到了一些问题。 这就是我要做的 我有一个现有的组件,可以监控n个不同软件包的性能,每个软件包都适合特定的类型。 i、 e现有部分 类型1的包装A 第2类B包 C包适用于类型3等 每个包都进行一些性能监视,并有自己的数据日志、记录等。。现在每个包只有一种类型 在未来,我们可能会有一个新的功能 -包括分析日志。这将有已经存在的数据日志,并在其上添加一些其

我希望在工作中对现有组件进行一些更改,并开始看到使用设计模式的优势。问题是我有一些具体的例子,我试图使用我在设计模式中学到的东西,但在这样做时遇到了一些问题。 这就是我要做的

我有一个现有的组件,可以监控n个不同软件包的性能,每个软件包都适合特定的类型。 i、 e现有部分

  • 类型1的包装A
  • 第2类B包
  • C包适用于类型3等
每个包都进行一些性能监视,并有自己的数据日志、记录等。。现在每个包只有一种类型

在未来,我们可能会有一个新的功能

-包括分析日志。这将有已经存在的数据日志,并在其上添加一些其他数据。 -支持一个包的多种类型。 i、 e类型1、类型2的A包(双类型) 1型、2型、3型(三型)的B包

看着这个,我想适配器模式在这里可能有用。 我可以使用现有组件作为适配器。然后在adapter类中执行新函数。我的目标是添加2个功能的最终组件。 因为我在这里处理的是现有代码,所以我认为应该添加一个适配器类来适应新特性。但我有第二个想法,因为适配器是为了使一个接口可以与另一个接口一起使用。这里我有一个现有的接口,但我没有一个目标接口已经存在。我还必须创建适配器和目标。所以我很困惑这个定义是否符合我的要求

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


当然。这个软件是为运动员设计的。现有系统跟踪这些运动员的训练细节。它有一些细节,如训练日志、他们喜欢的品牌和个人细节等。有一个为某类运动员创建的单独包。运动员类型包括网球运动员、高尔夫运动员、游泳运动员等。因此运动员只能是一种类型,网球运动员或高尔夫运动员,而不能两者兼有。未来将需要包括更多功能1。包括性能日志(即获取现有日志并在其上添加性能日志详细信息)。2.运动员的兴趣可以重叠,即单个运动员可以参与多个运动。一个运动员可以参加网球、金牌和游泳。希望现在一切都清楚了。

我将为每个常见的信息组创建一个接口,然后为他们可以申请的reach类型的运动员实现它们

interface IRunner
{
    int AverageSpeed {get; }

}

interface IBallPlayer
{
    int ShootingSpeed {get; }
}

class TennisPlayer : IBallPlayer;
class FootballPlayer : IRunner, IBallPlayer;
如果这不是你要寻找的,你必须更具体,给出一些代码示例,展示现有的代码和一些代码示例,展示你想要做什么


一张图片(代码)胜过千言万语。

我认为我们需要更多的细节,了解您目前的类结构,以及这些类的实例之间的交互。我不清楚“类型1的包A”到底是什么意思。您能列出监控组件知道的类,以及它对它们调用的方法吗?监控组件是否知道类型,或者只知道包?在监控组件看来,每种类型/包都是相同的,还是对每种类型/包调用不同的方法?当然。。我用更具体的细节更新了帖子。。请让我知道你的看法。我更感兴趣的是使用可用的设计模式,如从四人帮的书。您的解决方案看起来更像一个通用的解决方案。不特定于设计模式有人对此有其他看法吗?那么您需要更具体,并通过代码显示问题。