看Larman的UML和模式應用,感覺渾身上下都是寶,一遍兩遍都不過癮。
這幾天又在看GRASP(general responsibility assignment software patterns的縮寫),把該記的都記一下,加深印象,也與大家分享。網上這方面的資料并不多。
五個基本模式:information expert,creator,High Conhersion,Low Coupling,Controller
abstract class Square

{…
abstract void landedOn();
…}
class RegularSquare extends Square

{…
void landedOn()

{ … } // implementation
}
class IncomeTaxSquare extends Square

{…
void landedOn()

{ … } // implementation
}
這幾天又在看GRASP(general responsibility assignment software patterns的縮寫),把該記的都記一下,加深印象,也與大家分享。網上這方面的資料并不多。
五個基本模式:information expert,creator,High Conhersion,Low Coupling,Controller
四個擴展模式:P
olymorphism,indirection,pure fabrication,protected variations不想一一詳敘,挑重點看。
1,information expert:把職責分配給具有實現這個職責所需要信息的對象。它表述的是一種“直覺”。
2,creator:顧名思義,誰應該負責產生類的實例?類B聚合,包含,記錄,密切使用類A的數據。
3,high conhersion與Low coupling:應該是到了面向對象的高層境界了。高耦合:依賴性過強。內聚:功能性內聚。降低一切不穩定元素之間的耦合。
4,controller:如果直接通過UI來訪問業務層,后果是不堪想像的。C/S模式的開發中它是用來接收事件的,它通常不實現職責,只是委托給其他對象。在B/S中,我把它理解為serlvet。
5,polymorphism:多態?這個詞很別扭,一句話解釋:多態是設計系統如何處理相似變化的基本方法。便于擴展,可嵌入。比如以下代碼:



















6,indirection與pure fabrication:目的無非是為了降低耦合。對象的設計分為兩類:表示分離與行為分解。indirection與pure fabrication都是行為分解的產物。比如說我們常見的DAO模式,我認為就是很好的pure fabrication。
7,protected variations:書中翻譯為受保護變化。叫做受保護的變化似乎更容易被理解。受保護的變化機制的具體體現:多態,接口,中介,數據封裝。與LSP(liskov替換原理)很相似。