主要内容:
本节主要讲对象创建和接口隔离各四种设计模式。
1. 对象创建模式
1.1 工厂模式
ISplitter *splitter = new BinarySplitter(); 这样写是编译时的依赖具体类,违反依赖倒置原则。
MainForm只依赖于抽象的ISplitter和SplitterFactory,并不依赖于具体类。
利用工厂方法创建具体的Splitter,延迟对象创建。
1.2 抽象工厂
解决一系列对象创建的工作。
1.3 原型模式
通过克隆自己创建对象,调用自己的拷贝构造函数 eg. new BinarySplitter(*this)。
1.4 构建器
- eg. 构建房子
- 在构造函数中调用虚函数是静态绑定,不是动态绑定。因为子类对象在构造时,先调用父类的构造函数,由于子类还没有构造出来,所以在调用父类构造中不能调用子类的虚函数。
- 适用于:构建过程相同,但构建的各个部分不同的对象。
分离house和housebuilder,housebuilder中有一个指向house的指针,获取house的成员。housedirector实现对house的构建过程,其中有一个指向housebuilder的指针,获取构造各个部件的方法。
2. 接口隔离模式
2.1 门面模式
- 无论内部怎么变化,对外的接口还都是一致的。
- “解耦”。
- 一种架构设计思想。
2.2 代理模式
- 两个对象之间增加一层间接层。
- 在分布式系统中应用广泛。
2.3 适配器
- 复用原有的类,但现有的接口和原有接口不一致情况使用。
- 两种适配:
(1)对象适配,运用组合,符合松耦合。
(2)类适配,运用多继承,protected继承实现,不是继承接口。一般不推荐使用。
2.4 中介者
- 多个对象相互关联的情况使用。
- 用一个对象封装变化。
ps. 暂时写这么多,后面会边看书边补充。