1.找出變化,獨(dú)立出來
2.針對接口編程,而非針對實(shí)現(xiàn)編程
即針對超類型編程,根據(jù)實(shí)際情況執(zhí)行到真正的行為,變量的聲明通常是一個超類型或一個接口,具體實(shí)現(xiàn)此超類型的類所產(chǎn)生的對象都可指定給此變量
3.多用組合,少用繼承
4.交互對象之間的松耦合
即相互關(guān)聯(lián)的對象不會因?yàn)樽陨淼母淖兌绊憣Ψ?/p>
(1)策略模式:定義了算法族,將其封裝,讓它們之間可以互相替換,且讓算法的變化獨(dú)立于使用算法的客戶。

StrategyPattern
總結(jié):
a. 超類中定義子類中必須繼承的變量或行為
b. 子類中有變化且不一定存在的行為抽象為一個接口
優(yōu)點(diǎn):
a. 可在運(yùn)行時動態(tài)的改變行為
b. 當(dāng)增加其它行為或類時無需對原有子類進(jìn)行更改
適用實(shí)例:
游戲中角色(屬性、技能):技能可能會改變
(2)觀察者模式:在對象之間定義一對多的依賴,當(dāng)一個對象改變狀態(tài)時,依賴它的對象

ObservePattern(推式方式)
推式方式:
將所有數(shù)據(jù)推送給觀察者
拉式方式:
為觀察者提供主題的引用,由觀察者自行取數(shù)據(jù)
具體應(yīng)用:
JavaBeans、GMI