1、 中介者模式:每个A派生的子类对象的改变拥有中介者B
2、 装饰模式 B拥有被装饰对象A,B.operation()时,一定会调用到A.operation(),会先调用被装饰对象A的方法,让它先运行,然后自己再运行
3、 观察者模式 B拥有一系列观察者,Observer A观察B时,B的数据发生变化时,B会遍历List<observer> *pB
4、 适配器模式,就是在本类A中,去使用另外一个库类B,这时A拥有B,A可以用B的接口,完成自己的封装
5、 代理模式,只是在Proxy相对于于要代理类的对象,他们具有相同的接口,防止一开始就使用一个非常庞大的类,所以需要代理,等待时机使用
6、 Facade外观模式,相当于一个编译器,只需要提供一个接口就可以编译文件,但其内部却被屏蔽
7、 状态模式
8、 策略模式
9、 command命令模式,就是 使用command中一个Recevier对象构造一个command,设置它的Recevier,即可交给Recevier处理
10、 备忘录模式
11、 访问者模式
A要访问B,把A的指针传给B,调用B的方法,再回调到A的方法此时传this_B的指针,这样在A中就访问到了B
12、 职责链模式
13、 外观模式(FCADE)
A持有多个类的对象,这时A可以访问多个类了
二、优点类比
Factory模式中,相当于如下代码:
A* Create()
{
return new A;
}
在各个需要A的对象中,只需要调用Create(),这个函数式公共的,一旦需求改变,只需要改动Create()函数里的对象。同样的道理,全局变量的获取,也是用函数返回的。
参考:0、面向对象设计原则分析
7、刘伟技术博客