大纲:
- OO模式
- OO基础
- OO原则
- Point
# OO模式
# OO基础
- 抽象
- 封装
- 多态
- 继承
# OO原则
- 封装变化
- 组合优先继承
使用组合更加灵活,可以在运行时替换行为,而如果是使用继承。
行为则固定来自父类或子类。
- 针对接口编程
- 为交互对象之间的松耦合设计而努力
降低依赖
- 对扩展开发,对修改关闭
# Point
- 知道OO基础,并不足以让你设计出良好的OO系统。
- 良好的OO设计必须具备可复用、可扩充、可维护三个特性。
- 模式可以让我们建造出具有良好OO设计质量的系统。
- 模式被认为是历经验证的OO设计经验 。
- 模式不是代码,而是针对设计问题的通用解决方案。你可把它们应用到特点的应用中。
- 模式不是被发明,而是被发现。
- 大多数的模式和原则,都着眼于软件变化的主题。
- 大多数的模式都允许系统局部改变独立于其他部分。
- 我们常把系统中会变化的部分抽出来封装。
- 模式让开发人员之间有共享语言,能够最大化沟通的价值。
- 观察者模式定义了对象之间一对多关系。
- 主题
可观察者
用一个共同的接口来更新观察者 - 观测者和可观察者之间用松耦合方式结合
loosecoupl-ing
,可观察者者不知道观察者细节,只知道观察者实现类观察者接口。 - 使用此模式时,你可以从被观测者处推
push
或拉pull
数据。 - 有多个观察者时,不可以依赖特定的通知序列。
- Java有多种观察者模式的实现,包括了通用的 java.util.Observable。
- 要注意 java.util.Observable实现上所带来的一些问题。
- 如果有必要的话,可以实现自己的Observable,这并不难,不要害怕。
- Swing大量使用了观察者模式,许多GUI框架也是如此。
- 此模式也被应用在许多地方:JavaBeans,RMI。
- 继承属于扩展形式之一,但并不见得是达到弹性设计的最佳方式。
- 在我们的设计中,一个允许行为被扩展,而无需修改现有的代码。
- 组合和委托可用于在运行时动态地加上新的行为。
- 除了继承,装饰者也可以让我们扩展行为。
- 装饰者模式意味着一群装饰者群,这些类用来包装具体组件。
- 装饰者类反应出被装饰者的组件类型 (事实上,他们具有相同的类型,都经过接口或继承实现)。
- 装饰者可以在被装饰者的行为前面 and 后面加上自己的行为,升值将被装饰者的行为整个取代掉,而达到特定的目的。
- 你可以用无数个装饰者包装一个组件。
- 装饰者一般对组件的客户是透明的,除非客户程序依赖与组件的具体类型。
- 装饰者会导致设计中出现许多小对象,如果过度使用,会让程序变得很复杂。