1. 程式人生 > >設計模式--外觀模式

設計模式--外觀模式

通過 stc 我們 使用 客戶端 不同的 test ace log

技術分享

例如 你到政府部門去辦事情,你需要到部門1辦事情,然後再去部門2去辦事情,後面有了一站式窗口之後,你只需要把表交給一站式窗口。一站式窗口在去部門1和部門2去辦事情,客戶不用和模塊a和b打交道

技術分享

案例2:

客戶要自己組裝電腦,客戶需要自己去買cpu 去買電源 去買風扇燈,然後把電腦裝起來,相當的麻煩

客戶其實只要把電腦需要的配置告訴給電腦裝修公司,由裝電腦公司去把電腦裝好

技術分享

我們來看一個簡單的外觀模式的案例:

package cn.javass.dp.facade.example2;
/**
 * A模塊的接口
 */
public interface AModuleApi {
    /**
     * 示意方法,A模塊對外的一個功能方法
     
*/ public void testA(); }
package cn.javass.dp.facade.example2;

public class AModuleImpl implements AModuleApi{
    public void testA() {
        System.out.println("現在在A模塊裏面操作testA方法");
    }
}

package cn.javass.dp.facade.example2;

public interface BModuleApi {
    public void testB();
}、

package cn.javass.dp.facade.example2;

public class BModuleImpl implements BModuleApi{

    
    public void testB() {
        System.out.println("現在在B模塊裏面操作testB方法");
    }

}


package cn.javass.dp.facade.example2;

public interface CModuleApi {
    public void testC();
}
package cn.javass.dp.facade.example2;

public class CModuleImpl implements CModuleApi{ public void testC() { System.out.println("現在在C模塊裏面操作testC方法"); } }
package cn.javass.dp.facade.example2;
/**
 * 外觀對象
 */
public class Facade {
    /**
     * 示意方法,滿足客戶需要的功能
     */
    public void test(){
        //在內部實現的時候,可能會調用到內部的多個模塊
        AModuleApi a = new AModuleImpl();
        a.testA();
        BModuleApi b = new BModuleImpl();
        b.testB();
        CModuleApi c = new CModuleImpl();
        c.testC();
    }
}
package cn.javass.dp.facade.example2;

public class Client {
    public static void main(String[] args) {
//        //不用Facade,需要自己跟多個模塊交互
//        AModuleApi a = new AModuleImpl();
//        a.testA();
//        BModuleApi b = new BModuleImpl();
//        b.testB();
//        CModuleApi c = new CModuleImpl();
//        c.testC();
//        
//        System.out.println("使用Facade----------------------〉");
        //使用了Facade
        new Facade().test();        
    }
}

所謂的設計模式的本質就是有了接口,有了接口的具體實現類,然後才有設計模式,例如簡單工廠模式,有了業務接口,有課業務接口的具體實現類,然後才引入工廠模式,工廠模式能夠依據客戶的參數需求,選擇不同的具體現實類。

外觀模式本質上也是一樣的,通過外觀模式來實現用戶的需求

註意點:facade需要知道系統內部的模塊a,模塊b,facade屏蔽了系統內部和客戶端的關系,當系統內部的模塊功能發送改變的時候,客戶端是不知道的,例如裝修電腦,轉機公司要到去買電源,裝機公司需要去買cpu,客戶不直接和cpu公司這些打交道

 技術分享

技術分享

設計模式--外觀模式