OO Design Pattern
Old Learning Notes
Written in Chinese
大话设计模式
UML
- 继承关系:空心箭头+实线
- 接口实现:空心箭头+虚线
- 关联关系:是新箭头+实线 (当一个需要了解另一个类)
- 聚合关系:空心菱形+实线箭头(Aggregation:弱拥有关系)
- 组合关系:是心灵性+实线箭头相同的生命周期强拥有关
简单工厂模式:
- 工厂类根据用户选项创建(返回)不同的对象(多态)
- 但这里工厂只是返回对象,选择过程其实是在客户端完成的
Strategy model
封装变化点是重要的思维方式
- 将工厂转变为 context 对象,选择是在 context 完成的,the difference is that context class contains all the optional algorithms class.
- Regarding to a class, there should be only one reason for its changing.
Open-Close principle
- Open for extension
- Close for modification
里氏代换原则
- 子类必须能够替换掉他们的父类
倒转原则
克隆
- 真是个好东西啊,可以完全复制对象(不是类),将其的字段都复制过来,对于大部分内容都相同的类就不用实例化那么多遍了。构造函数分配空间,初始化值,加上后续修改过的字段,都不用重新做一遍。
- 浅表复制不复制引用的对象,只复制引用。
- 深复制:重写clone方法,使其实例化一个新的对象
模版
定义一个操作中的算法和框架,将一些不周延迟到子类中
迪米特法则LoD
如果两个类不必直接通信,那么两个类就不应该发生直接相互作用,可以通过第三方调用
修电脑找IT部门而不是找具体那个工程师