天天看點

單一職責,開閉,裡氏,依賴原則

單一職責原則了解

1:該原則提出了對對象職責的一種理想期望.對象不應該承擔太多職責,正如人不應
	該一心分為二用.唯有專注,才能保證對象的高内聚;唯有單一,才能保證對象的細
	粒度.對象的高内聚與細粒度有利于對象的重用;
2:一個類(或者大到子產品,小到方法)承擔的職責越多,它被複用的可能性越小.而且如
	果一個類承擔的職責過多,就相當于将這些職責耦合在一起,當其中一個職責變化
	時,可能會影響其他職責的運作.
3:類的職責主要包括兩個方面:資料職責和行為職責,資料職責通過其屬性來展現,而
	行為職責通過其方法來展現;
4:單一職責原則是實作高内聚,低耦合的指導方針,在很多代碼重構手法中都能找到
	它的存在,它是最簡單但又最難運用的原則,需要設計人員發現類的不同職責并将
	其分離,而發現類的多重職責需要設計人員具有較強的分析設計能力和相關重構
	經驗;
           

裡氏替換原則了解

1:裡氏替換原則可以通俗表述為:在軟體中如果能夠使用基類對象,那麼一定能夠使
     用其子類對象.把基類都替換成它的子類,程式将不會産生任何錯誤和異常,反過
     來則不成立,如果一個軟體實體使用的是一個子類的話,那麼它不一定能夠使用
     基類.
2:裡氏替換原則是實作開閉原則的重要方式之一,由于使用基類對象的地方都可以
	 使用子類對象,是以在程式中盡量使用基類類型來對對象進行定義,而在運作時
	 再确認其子類類型,用子類對象來替換父類對象.
3:Java語言中,在編譯階段,Java編譯器會檢查一個程式是否符合裡氏替換原則,這
	 是一個與現實無關的,純文法意義上的檢查,但Java編譯器的檢查是有局限的.
           

開閉原則

開閉原則定義:
	1:開閉原則(Open-Closed Principle,OCP)定義如下:
	     一個軟體實體應當對擴充開放,對修改關閉.也就是說在設計一個子產品的時候,
	  應當使這個子產品可以在不被修改的前提下被擴充,即實作在不修改源代碼的情
	  況下改變這個子產品的行為.
 	2:了解:抽象化是開閉原則的關鍵
 		(1):絕大部分的設計模式都符合開閉原則,在對每一個模式進行優缺點評價
 			時都會以開閉原則作為一個重要的評價依據,以判斷基于該模式設計的
 			系統是否具備良好的靈活性和可擴充性.
 		(2):遵循開閉原則的系統設計,可以讓軟體系統可複用,并且易于維護.
           

依賴倒轉原則

依賴倒轉原則定義

1:依賴倒轉原則(Dependence Inversion Principle,DIP)的定義如下:
	  高層子產品不應該依賴低層子產品,它們都應該依賴抽象.抽象不應該于細節,細節應
	該依賴于抽象.
2:另一種表述為:
	要針對接口程式設計,不要針對實作程式設計.
           

依賴倒轉原則了解

1:簡單來說,依賴倒轉原則就是指:代碼要依賴于抽象的類,而不要依賴于具體的類;
	要針對接口或者抽象類程式設計,而不是針對具體類程式設計.
2:實作開閉原則的關鍵是抽象化,并且從抽象化導出具體化實作,如果說開閉原則是
	面向設計的目标的話,那麼依賴倒轉原則就是面向對象設計的主要手段.
3:依賴倒轉原則的常用實作方式之一是在代碼中使用抽象類,而将具體類放在配置
	檔案中.
           

依賴倒轉原則分析

1:類之間的耦合
	(1):零耦合關系:兩個類沒有依賴關系;
	(2):具體耦合關系:兩個具體的類之間有依賴關系,如果一個具體類直接引用另外
		一個具體類,就是這種關系;
	(3):抽象耦合關系:這種關系發生在一個具體類和一個抽象類之間,這樣就使必須
		發生關系的類之間保持最大的靈活性;	
2:依賴倒轉原則要求用戶端依賴于抽象耦合,以抽象方式耦合是依賴倒轉原則的關
	鍵;
           

依賴注入

1:當某個角色(可能是一個Java執行個體,調用者)需要另一個角色(另一個Java執行個體,被調用者)的協助時,在傳統的程式設計過程中,通常由調用者來建立被調用者的執行個體
	(1):構造注入:通過構造函數注入執行個體變量;
	(2):設值注入:通過Setter方法注入執行個體變量;
	(3)接口注入:通過接口方法注入執行個體變量;
           

繼續閱讀