繁体   English   中英

你不能没有哪种GoF模式?

[英]Which of the GoF patterns could you not live without?

如果将来您只能使用“ 四人帮”一书中定义的单一规范模式,您会选择哪一个以及出于什么原因?

不是一种设计模式,但对我而言,这个原则绝对是我整本书编程风格中最具影响力的:

在类继承上支持对象组合。

结合其他原则“程序到接口,而不是实现”,大多数设计模式自然而然地遵循。

在我看来,选择一种最重要的模式是不可能的。 他们都有自己的目的,相得益彰。 就像询问锤子或螺丝刀是否更有用一样。 这取决于问题,有时你有一个钉子,有时你的螺丝。

抽象工厂模式或模板方法模式......但主要是抽象工厂模式。 它们在很多情况下都非常有用。

我特别喜欢抽象工厂允许您通过以不同方式遵循相同规则来准备您将来可能会改变您的程序的情况。

大多数情况下,抽象类允许您在代码“内部”定义规范,限制代码遵循该规范,而工厂允许您在这些规范中“选择”。 简单的美丽。

观察者模式

我喜欢国家模式。 对于建模,好吧,状态都有好处。 对于我正在编写的游戏项目,我使用状态层次结构来跟踪游戏状态。 它很简单但非常灵活。

我会说装饰者模式 主要是因为它已经在框架中大量使用。

例如,如果您编写过这样的代码:

FileStream file = new FileStream("file.txt");
GZipStream compression = new GZipStream(file);
TextReader reader = new TextReader(compression);
reader.ReadAll();

然后你使用了Decorator模式。

如果我必须选择一个,我会选择封面上的MCEscher图片,放在墙上。 ;)

这是一个棘手的问题,因为我发现当我学习模式时,我正在以非常类似的方式为许多设计模式实现许多系统(特别是更基本的模式,如创建模式或状态,和战略和模板)。

现在我知道了GoF,我无法在脑海中分离出我自然不会发现的模式,对我而言,这就是形成良好模式的模式。 一个好的模式很自然,你可以使用模式编写代码,因为它是一个很好的解决方案。

模式只是让我们谈谈我们用普通方言编写解决方案的策略。 我知道我没有回答你的问题所以我applogize。

我喜欢访客模式。 不止一次,我遇到了设计问题并无法解决问题,直到我终于发现访客模式才是答案。

您可以向类添加任何功能,而无需更改它! 只需在其中放入一个accept()函数。

监听器或观察者模式。

无法想象我的生活中会检查是否发生了事情。

其他:

  1. 适配器 (如果您不想触摸有效的代码但是您没有时间了解如何,或者您只是不知道),这非常有用
  2. 战略

我不得不说Singleton模式。 你需要多少次一次又一次地使用一个类的实例! 它可能被认为是反模式,但它是我经常使用的模式。

抽象工厂模式也是我一直使用的模式 ,并且当我们需要实现一组新的需求时,前期开发为我节省了数小时的重新分解。

行为模式

  • 陈述我的业务逻辑分配时的状态;
  • 上下文改变算法时的策略 ;
  • 读取对象集合时的迭代器 ;

我不能没有的是迭代者。 我每天都用它。 我很难想象没有它的生活:-)我最常用的是Decorator / Wrapper。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM