外觀模式

外觀模式:爲子系統的一組接口,提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

在講外觀模式前,我們引入兩個設計模式中的兩個重要原則:依賴倒轉原則迪米特法則

依賴倒轉原則:抽象不依賴細節,細節要依賴抽象。簡單講,就是面向接口編程,而不面向實現編程

迪米特法則:如果兩個類不必彼此直接通信,那麼這兩個類就不應該發生直接的相互作用。如果其中的一個類需要調用另一個類,則由第三方轉發這個調用。

外觀模式完美的體現了依賴倒轉原則迪米特法則

我們用經理人購買股票基金來進行說明,普通客戶是不懂得投資股票和基金的,但是我們可以交給經理人,這樣,我們直接面向經理人,不用瞭解細節。

外觀模式結構圖如下:


代碼如下

class Fund1{
	public void Method1(){
		System.out.println("第一種基金");
	}
}
class Fund2{
	public void Method2(){
		System.out.println("第一種基金");
	}
}
class Stock1{
	public void Method3(){
		System.out.println("第一種股票");
	}
}
class Stock2{
	public void Method4(){
		System.out.println("第二種股票");
	}
}
/*
 * 外觀類
 * 與客戶(端)直接作用
 */
class  Manager{
	private Fund1 fund1;
	private Fund2 fund2;
	private Stock1 stock1;
	private Stock2 stock2;
	public Manager(){
		 fund1 = new Fund1();
		 fund2 = new Fund2();
		 stock1 = new Stock1();
		 stock2 = new Stock2();
	}
	public void MethodA(){
		stock1.Method3();
		stock2.Method4();
	}
	public void MethodB(){
		fund1.Method1();
		fund2.Method2();
		stock2.Method4();
	}
}
public class  Client{
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Manager manager = new Manager();
		System.out.println("經理人爲小紅購買的基金和股票:");
		manager.MethodA();
		System.out.println("經理人爲小強購買的基金和股票:");
		manager.MethodB();

	}

}
運行結果:
經理人爲小紅購買的基金和股票:
第一種股票
第二種股票
經理人爲小強購買的基金和股票:
第一種基金
第一種基金
第二種股票
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章