外观模式

定义:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

类图

示例

//子系统类
public class Light {
    void lightOff(){
        System.out.println("关闭电灯");
    }
}

//子系统类
public class Television {
    void televisionOn(){
        System.out.println("打开电视");
    }
}

//外观类
public class HomeFacade {
    private Light light;
    private Television television;

    public HomeFacade() {
        light=new Light();
        television=new Television();
    }
    void lightOff(){
        light.lightOff();
    }
    void television(){
        television.televisionOn();
    }
    void watchMovie(){
        light.lightOff();
        television.televisionOn();
    }
}
//客户端
public class Client {
    public static void main(String[] args){
        //非外观模式调用,需要客户了解子系统所有的类
        Light light = new Light();
        Television television = new Television();
        light.lightOff();
        television.televisionOn();

        //外观模式调用,客户只需要了解外观类
        HomeFacade homeFacade = new HomeFacade();
        homeFacade.lightOff();
        homeFacade.television();
        homeFacade.watchMovie();//外观模式可以对低层的行为进行组合或者添加额外的行为
    }
}

运行结果

 

缺点:对外观类的扩展不符合开放闭合原则

 

posted @ 2020-02-25 09:49  Camcay  阅读(79)  评论(0)    收藏  举报