天天看點

JAVA設計模式六大原則個人了解【下】

1、接口隔離原則

定義:用戶端不應該依賴它不需要的接口;一個類對另一個類的依賴應該建立在最小的接口上。

了解:不要讓類去實作接口中該類不需要實作的方法。

執行個體:

//類A隻需要功能m1,類B隻需要功能m2,但是把接口定義太複雜,太臃腫,類A和類B都必須實作接口I中其他本類不需要的方法
	interface I{
		public void m1();
		public void m2();
		public void m3();
	}
	
	class A implements I{
		public void m1(){System.out.print("類A需要功能m1")};
		public void m2(){};
		public void m3(){};
	}
	
	class B implements I{
		public void m2(){System.out.print("類B需要功能m2")};
		public void m1(){};
		public void m3(){};
	}
           
//采用接口隔離原則,将接口I拆分為獨立的幾個接口,然後讓類A和類B分别去實作擁有他們所需功能的接口,這樣類A和類B中也不會有多餘的備援代碼
	interface I1{
		public void m1();
	}
	interface I2{
		public void m2();
	}
	interface I3{
		public void m3();
	}
	
	class A implements I1{
		public void m1(){System.out.print("類A需要功能m1")};
	}
	
	class B implements I2{
		public void m2(){System.out.print("類B需要功能m2")};
	}
           

2、迪米特法則

定義:一個對象應該對其他對象保持最少的了解。

了解:掌握低耦合、高内聚的思想;盡量不要讓類依賴類,如果依賴類了,盡量讓被依賴的類方法public,成員private;陌生的、你不需要了解的類,盡量不要出現在你的局部變量中。

執行個體:迪米特法則經典執行個體,請看部落格中的《代理模式--介紹、應用及代碼》一文。點選打開連結

3、開閉原則

定義:一個軟體實體如類、子產品和函數應對擴充開放,對修改關閉。

了解:除非BUG,當軟體需要變化時,盡量通過擴充軟體實體的行為來實作變化,而不是通過修改已有代碼來實作變化。也就是你可以通過增加Public方法來擴充功能,但是不要修改已有代碼,尤其是架構。開閉原則核心:用抽象建構架構,用實作擴充細節。

執行個體:将前面講過的5種原則應用好了,開閉原則就實作了。

-----總結-----

單一職責原則:實作類要職責單一

裡氏替換原則:盡量不要重寫或重載父類,不要破壞繼承體系

依賴倒置原則:多面向接口程式設計

接口隔離原則:設計接口要精簡單一

迪米特法則:低耦合、高内聚,沒必要去了解你所依賴的類或接口的全部,也不需要與你不想了解的類成為直接朋友。

開閉原則:總綱。對外擴充開放,修改關閉!!!