我如何理解/约需 “时使用何种设计模式” 的决定?
在决定在适当的地方使用适当的设计模式时,要观察哪些因素?
我如何理解/约需 “时使用何种设计模式” 的决定?
在决定在适当的地方使用适当的设计模式时,要观察哪些因素?
一般来说,如果你做得对,它就有一个模式。你现在可能知道你正在使用它。
如果你做错了,它有一个反模式。但你绝对是不知道你正在使用它。
Gang of Four (GoF)模式是一个很好的资源。
所有明确定义的模式都有背景,上下文和模式解决的问题。
模式的要点就是告诉你什么时候合适。
看看这本优秀的书"Emergent Design: The Evolutionary Nature of Professional Software Development"。它向您展示了我们如何最终实现设计模式,并将为您提供架构代码的良好指导。
你不应该总是开始让你的软件适合一种设计模式,但是如果它匹配你使用它的话。在许多情况下,你所做的大多数事情都会有一种设计模式,这种模式仅仅是一种从许多不同的软件实现中观察到的模式,这种模式很常见
例如,如果您有一组所有需要同步的类。那么,这与观察者或发布/订阅模式很好,其中一个类是通知程序,另一个类监听通知。 Observer pattern
或者说你想限制游戏引擎中的内存使用,那么你可能会创建一个ObjectPool。 Object pool
或者,也许你想简化一组对象为simplr API然后使用Facade模式:只使用功能模式,如封装和继承Facade pattern
很多时候都是精品。这取决于问题。在大多数情况下,您尝试编码的大部分内容都将以模式解决,但模式不是编码的唯一方式。在许多情况下,你开始设计或有需要,它成为一种模式。
记住模式起源于观察许多类型的软件问题,它不是起点而是软件体系结构的反映。
Design pattern (computer science)
在dofactory.com的方式很多样:Design pattern tutorial by dofactory
Python的设计模式:http://video.google.com/videoplay?docid=-3035093035748181693
强制的设计模式就像是迫使OO。它应该来自手头项目的需求。
我发现如果我只是黑客程序,很好地使用设计模式几乎是不可能的,但是,如果你设计你的程序,那么你可以看看你想要做什么和设计模式开始出现在你的申请。
例如,如果您看到有一个指导应用程序流的类,那么Controller模式是有意义的。
使用设计模式的另一种方式是编写程序,使其工作,然后使用设计模式进行重构。我相信马丁福勒写了一本关于这个主题的书,但我对作者并不积极。
无论哪种方式,它都有助于了解您想要做什么来帮助确定哪些模式最适合。
你读过这本书吗?读了这本书。 – 2009-06-14 01:46:42
我认为这可能是http://stackoverflow.com/questions/85272/how-do-you-know-when-to-use-design-patterns的副本 – 2009-06-14 01:50:03
谢谢史蒂夫!链接确实有帮助。 – 2009-06-14 01:54:03