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、劉偉技術博客