设计模式:可重用的面向对象软件的元素

Design Patterns: Elements of Reusable Object-Oriented Software

本文关键字:面向对象 元素 软件 设计模式      更新时间:2023-10-16

在深入研究《设计模式(四人帮)》一书之前,我想问一个一般性的问题......

本书的引言提到它将使用C++作为主要代码示例,你们中的任何一个Java专家是否读过这本书,我是否能够轻松地在Java中实现设计模式?

我知道这是一个有点模糊的问题,但如果这本书真的更适合C++程序员,我不想浪费我的任何时间。

我期待您的意见!

这本书几乎不会浪费时间。它可以很容易地翻译成任何面向对象的语言。例如:我发现我的Python设计因为这本书而得到了改进,尽管Python中的设计模式以明显不同的方式实现。

这本书为我提供的(也是整个概念的明确目标)是向我和他人表达我的意图的语言。思考或说"此组合可以被访问者遍历"比阐明您希望有条件地将一组解耦的功能应用于嵌套数据结构的元素更容易。

现在:当心模式错误。

并非一切都必须是一种模式,有时我浪费了大量时间试图"模式化"完美工作的软件。

所以,我的结论是:阅读它,学习它,使用它,但不要滥用它。

一点也不麻烦,而且示例不会使用太复杂的C++。

我发现的主要问题是有些例子是为Smalltalk编写的,这些例子更难理解(如果你不了解Smalltalk),也更难翻译成Java。

例如,在Decorator模式中,一种变体是您在装饰器中调用一个方法(Smalltalk 中的"消息"),如果它没有定义此类方法,则更改默认值以将该方法/消息发送/委托给装饰对象。