摘自:《敏捷軟件開發:原則、模式與實踐》 Robert C.Martin【著】,鄧輝【譯】
類設計原則:
(1) SRP,單一職責原則(The Single Responsibility Priciple):
就一個類而言,應該僅有一個引起它變化的原因。
(2) OCP,開放封閉原則(The Open-Close Priciple):
軟件實體(類、模塊、函數等)應該是可以擴展的,但是不可修改;封閉是建立在抽象的基礎上的,我們應該只對程序中頻繁變化的部分進行抽象,拒絕不成熟的抽象與抽象本身一樣重要!OCP背后的主要機制是抽象、多態和繼承。
(3) LSP,Liskov替換原則(The Liskov Substitution Priciple):
子類型必須能夠替換掉它們的基類型。對于LSP的違反常常會導致使用運行時類型識別(RTTI)(使用一個顯式的if語句或者if/else鏈來確定一個對象的類型)。
(4) DIP,依賴倒置原則(The Dependency Inversion Priciple):
高層模塊不應該依賴于底層模塊,二者都應該依賴于抽象;抽象不應該依賴于細節;細節應該依賴于抽象。事實上,使用new來創建對象的任何時候,我們都違反了DIP;但有時,這種違反是無害的,例如依賴于穩定不變的具體類。
(5) ISP,接口隔離原則(The Interface Segregation Interface):
不應該強迫客戶依賴于他們不用的方法。接口屬于客戶,不屬于它們所在的類層次結構。
胖類(fat class)會導致它們的客戶程序之間產生不正常的并且有害的耦合關系。當一個客戶程序要求該胖類進行一個改動時,會影響到所有其他的客戶程序。因此,客戶程序應該僅僅依賴于它們實際調用的方法。通過把胖類的接口分解為多個特定與客戶程序的接口,可以實現這個目標,每個特定于客戶程序的接口僅僅聲明它的特定客戶或者客戶組調用的那些函數。接著,該胖類就可以繼承所有特定于客戶的接口,并實現它們。這就解除了客戶程序和它們沒有調用的方法間的依賴關系,使得客戶程序之間互不依賴。分離客戶就是分離接口!
包設計-內聚原則:
(1) REP,重用發布等價原則:
重用的粒度就是發布的粒度。
(2) CCP,共同封閉原則:
包中的所有類對于同一類性質的變化應該是共同封閉的。 一個變化若對一個包產生影響,則將對該包中的所有類產生影響,而對于其他的包不造成任何影響。
(3) CRP,共同重用原則:
一個包中的所有類應該是共同重用的。如果重用了包中的一個類,就應該重用包中的所有類。
包設計-耦合原則:
(1) ADP,無環依賴原則:
在包的依賴關系圖中不允許存在環。
(2) SDP,穩定依賴原則:
朝著穩定的方向進行依賴。
(3) SAP,穩定抽象原則:
包的抽象程度應該和其穩定程度一致。
浙公網安備 33010602011771號