設計模式-外觀模式(門面模式)
阿新 • • 發佈:2021-12-06
外觀模式 為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得子系統更容易使用。
例子:
假如我現在要買3支股票,等收益了在賣出,那麼現在是這樣的
1.定義三隻股票
//股票1 class shares1{ public void buy1(){ System.out.println("股票1買入"); }; public void sell1(){ System.out.println("股票1賣出"); }; } //股票2 class shares2{ public void buy2(){ System.out.println("股票2買入"); }; public2.操作買入和賣出void sell2(){ System.out.println("股票2賣出"); }; } //股票3 class shares3{ public void buy3(){ System.out.println("股票3買入"); }; public void sell3(){ System.out.println("股票3賣出"); }; }
public static void main(String[] args) { shares1 shares1 = new但是這樣太麻煩了,使用了外觀模式之後 就相當於是買了基金,我不需要甚至是不知道有股票的存在,操作基金的買入賣出即可。其實就是加了一層而已。 增加基金,用基金來操作股票,股票的三個類不變shares1(); shares2 shares2 = new shares2(); shares3 shares3 = new shares3(); shares1.buy1(); shares2.buy2(); shares3.buy3(); shares1.sell1(); shares2.sell2(); shares3.sell3(); }
//買賣改為買賣基金基金 class Fund { private Shares1 shares1; private Shares2 shares2; private Shares3 shares3; public Fund(Shares1 shares1, Shares2 shares2, Shares3 shares3) { this.shares1 = shares1; this.shares2 = shares2; this.shares3 = shares3; } public void buy(){ shares1.buy1(); shares2.buy2(); shares3.buy3(); } public void sell(){ shares1.sell1(); shares2.sell2(); shares3.sell3(); } }
public static void main(String[] args) { Fund fund = new Fund(new Shares1(), new Shares2(), new Shares3()); fund.buy(); fund.sell(); }
總結:
外觀模式本質就是加一層,用來封裝複雜的功能,提供一個統一的入口,使得呼叫方無須知道細節邏輯 代理模式和外觀模式的的區別 代理模式強調的是一對一,一個代理類代理一個類 外觀模式強調的是一對多,一個外觀類對應多個類