Design Patterns
面向对象范式的核心是“对象”的概念。所有的东西都聚焦于对象。围绕对象——而非函数——组织代码。
什么是对象?对象最初被定义为“拥有方法(面向对象版本的函数)的数据”。很不幸,这种看待对象的观点有很大的局限性。
有种对象技术是:对象的识别来自于对问题领域中实体的观察。观察这些实体需要做些什么,我为每个对象确定他们的责任(或方法);
更有用的定义是基于概念视角的定义——对象是拥有责任的实体。这些责任让对象拥有自己的行为。对象应该对自己负责,并且这种责任应该被清楚地定义出来。
这是一个更好的定义,因为他帮助我将注意力集中在“对象应该做什么”,而不是仅仅是“如何实现他们”。这让我可以分两步构建软件:
1.建立一个初步的设计,不必担心涉及的任何细节。
2.实现前面一个步骤得到的设计。
最后,这样的视角让我可以得到更好的对象选择及定义(在某种意义上面这是任何涉及的要点)。对象定义将更灵活;通过关注对象“做什么”,我们可以借助继承在需要的是有使用不同的、特定的行为。如果集中注意力与实现细节,我们也许可以得到这样的效果,但要获得相应的灵活性就必须付出更高的代价。
按照责任来考虑问题可以使问题更简单化,因为这样可以帮助我们定义对象的公共接口。如果对象有某种责任,就一定有某种途径要求他履行自己的责任。但是,这并不是对对象内容做任何的暗示。关于对象的责任信息甚至可以不再这个对象内部。
“关注动机而不是实现”的情景在设计模式中反复出现。
用这样的方法看待对象。让它成为你对对象的基本观点。如果你这样做了,你将获得出众的设计。
摘自:Design Patters Explained-Alan Shalloway & James R.Trott
对象, 设计模式
学习设计模式的理由:
- 复用解决方案——通过复用已经建立的设计,我为自己的问题找到更高的起点并避免了绕弯路。我受益于学习别人的经验。我不必再为普通、重复的问题重新设计解决方案。
- 建立通用的术语——交流与协作都需要一个共同的词汇基础、一个对问题的共同观点。设计模式在项目的分析和设计简短提供了一个通用的参考点。
- 对于问题、设计过程和面向对象,模式给你一个更高层次的视角。这样的视角将你从“过早处理细节”的“暴政”中解放初来。
- 复用现有的、高质量的、针对常见的重复出现问题的解决方案。
- 建立通过术语一改善团队内部的沟通。
- 将思考转移到更高的视角。
- 判断是否拥有正确的设计,而不是仅仅一个可以运行的设计。
- 改善代码的可修改性。
- 促进对改良设计的选用,甚至在没有明确使用模式的时候。
- 发现“庞大的继承体系”的替代方案。
创建优秀面向对象设计:
- 针对接口变编程。
- 优化使用对象组合,而不是类继承。
- 找到并封装变化点。
摘自: Design Patters Explained-Alan Shalloway & James R.Trott
设计模式
没有评论:
发表评论