1. 程式人生 > 其它 >設計模式-外觀模式(門面模式)

設計模式-外觀模式(門面模式)

外觀模式 為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得子系統更容易使用。 例子: 假如我現在要買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買入");
    };

    public
void sell2(){ System.out.println("股票2賣出"); }; } //股票3 class shares3{ public void buy3(){ System.out.println("股票3買入"); }; public void sell3(){ System.out.println("股票3賣出"); }; }
2.操作買入和賣出
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();
}

總結:

外觀模式本質就是加一層,用來封裝複雜的功能,提供一個統一的入口,使得呼叫方無須知道細節邏輯 代理模式和外觀模式的的區別 代理模式強調的是一對一,一個代理類代理一個類 外觀模式強調的是一對多,一個外觀類對應多個類