Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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 Gof设计模式:适用于哪些场景_Design Patterns - Fatal编程技术网

Design patterns Gof设计模式:适用于哪些场景

Design patterns Gof设计模式:适用于哪些场景,design-patterns,Design Patterns,我试图理解设计模式,我从GoF设计模式开始,我发现 我还知道还有其他类型的设计模式,如:J2EE设计模式、企业应用程序架构模式 我的疑问是: GoF设计模式是否适用于“独立”类型的应用程序?我很难理解如何将GoF设计模式应用于分布式应用程序中的远程查找 任何人都可以帮助我了解什么是GoF设计模式可以应用的实际情况/应用类型。GoF模式可以应用于任何系统设计,如果您正在寻找具体的例子,那么您的想法是完全错误的(根本没有冒犯的意思)。一开始这种想法很常见 例如,我可以说,从最简单、最常见的扑克游戏开

我试图理解设计模式,我从GoF设计模式开始,我发现

我还知道还有其他类型的设计模式,如:J2EE设计模式、企业应用程序架构模式

我的疑问是: GoF设计模式是否适用于“独立”类型的应用程序?我很难理解如何将GoF设计模式应用于分布式应用程序中的远程查找


任何人都可以帮助我了解什么是GoF设计模式可以应用的实际情况/应用类型。

GoF模式可以应用于任何系统设计,如果您正在寻找具体的例子,那么您的想法是完全错误的(根本没有冒犯的意思)。一开始这种想法很常见

例如,我可以说,从最简单、最常见的扑克游戏开始,一款只有一副牌的扑克游戏可能会成为单身模式的候选。Singleton确保一个类只有一个实例化。可能有一千种不同的情况

同样的扑克游戏可能会使用访客模式来评估桌上的每一手牌。访问者用于迭代对象集合,并对单个对象或组合执行几乎任何类型的操作

同时,你可能会说手牌是由单个卡片组成的复合牌,这些卡片本身可以被视为复合牌的叶子对象;在这种情况下,复合模式访问者将与迭代器模式一起使用(它们通常一起使用)

观察者模式可能同时起作用,因为每个玩家都会在基本上是游戏玩家的经销商处注册。如果游戏中有AI玩家,策略模式可用于替换用于根据游戏不断变化的动态驱动AI玩家决策的算法。实际上,当我重新阅读时,我应该在这里也提到状态模式,状态机通常用于AI系统

装饰图案可用于为单个AI玩家添加独特的行为,或在运行时更改图形的绘制方式,或改变背景噪音的多样性或两者兼而有之。在这种情况下,我可能不应该忘记提到FlyWeightFlyWeight装饰师非常酷

模式,而不仅仅是GoF,是一种设计哲学,旨在解决任何设计过程中的典型陷阱——反模式。你可以在你的想象范围内发挥创意

模式与具体正好相反,因为它们促进了OOD的基本原则,比如编程到接口而不是实现,或者促进较低级别的依赖性到较高级别抽象的控制,或者开放-关闭原则(开放用于扩展;关闭用于修改)就像潘多拉的盒子类比

在我看来,最好是让模式实现与它帮助我们编写的代码保持松散耦合,但在使用它们时需要考虑一个坚实的约定。每种模式都有一个典型的动机和意图。它们也被方便地分类以反映这一点,因为有一个原始的反模式(现在仍然是)推动了每一个模式的设计,以及某些模式的典型组合,它们非常自然地一起工作


一个人处理概念的方式,或者更好地说,OOD的哲学,将直接影响到个人有效实施模式的能力。顺便说一句,它确实有一个必要的啊哈!瞬间,这是唯一与它们的有效和创造性使用相关的真正的意外事件。

有很多可以应用GoF设计模式的例子,对于start,您可以查看以下网站: , ,