Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 设计模式_Design Patterns - Fatal编程技术网

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包A用于类型1,类型2双类型包B用于类型1,类型2,类型3三类型 看着这个,我想适配器模式在这里可能有用。我可以使用现有组件作为适配器。然后在适配器类中执行新功能。我的目标是添加2个功能的最终组件

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

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

这个软件是为运动员设计的。现有系统跟踪这些运动员的训练细节。它有一些细节,如训练日志、他们喜欢的品牌和个人细节等。有一个为某类运动员创建的单独的包。运动员类型包括网球运动员、高尔夫运动员、游泳运动员等。因此运动员只能是一种类型,网球运动员或高尔夫运动员,而不能两者兼有。未来将需要包含更多功能

包括性能日志,即获取现有日志并在其上添加性能日志详细信息。 运动员的兴趣可以重叠,即单个运动员可以参与多个运动。一个运动员可以参加网球、金牌和游泳。
希望现在一切都清楚了。

不幸的是,您无法实现此处建议的模式。您必须至少熟悉最常见的功能,并了解何时使用它们。您甚至可以为某些特定情况创建自己的模式

您的描述对我来说不是很清楚,但我可以建议您查看桥梁模式的方向,并尝试制作如下内容:

abstract class Sportsmen {
  ILogger logger;
  List<IPackage> packages;
  List<IInterest> interests;
}

interface IPackage {
  IList<ISomeType> SupportingTypes {get;set; }
}
我向您推荐一本关于模式的免费在线好书:


祝你好运

这看起来是装饰图案的一个很好的例子

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

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

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


希望这有帮助

因此,有一种称为AAP答案接受模式的东西,它提到每个用户都应该接受以前发布的问题的答案,并给出有效的答案。一旦遵循了这个模式,它就会鼓励人们关注你未来的问题并回答它们。这是一个很好的模式,相信我,它是有效的。哦,是的,我不知道,我接受了一些答案