外观模式Facade(结构型)

来源:互联网 发布:手机淘宝购物怎么省钱 编辑:程序博客网 时间:2024/05/22 06:51

参考文档:

1.设计模式书籍

2.http://blog.csdn.net/hguisu/article/details/7533759



外观模式Facade(结构型)

理论方面的可以查看这篇博客:http://blog.csdn.net/hguisu/article/details/7533759( 设计模式(九)外观模式Facade(结构型))


代码实现:(案例是上篇博客中的例子)

例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计。

Client.java:
package com.rick.designpattern.facade;/** * Created by MyPC on 2017/6/5. */public class Client {    public static void main(String[] args) {        ConcreteFacade concreteFacade = new ConcreteFacade();        concreteFacade.on();        System.out.println("-----------------------------------------------");        concreteFacade.off();        System.out.println("-----------------------------------------------");        ConcreteFacade2 concreteFacade2 = new ConcreteFacade2();        concreteFacade2.on();        System.out.println("-----------------------------------------------");        concreteFacade2.off();    }}
AbstractFacade.java:
package com.rick.designpattern.facade;/** * Created by MyPC on 2017/6/5. */public abstract class AbstractFacade {    public abstract void on();    public abstract void off();}
ConcreteFacade.java:
package com.rick.designpattern.facade;/** * Created by MyPC on 2017/6/5. */public class ConcreteFacade extends AbstractFacade {    private AirConditioner mAirConditioner;    private Fan mFan;    private Light mLight;    public ConcreteFacade() {        mAirConditioner = new AirConditioner();        mFan = new Fan();        mLight = new Light();    }    @Override    public void on() {        mAirConditioner.on();        mFan.on();        mLight.on();    }    @Override    public void off() {        mAirConditioner.off();        mFan.off();        mLight.off();    }}
ConcreteFacade2.java:
package com.rick.designpattern.facade;/** * Created by MyPC on 2017/6/5. */public class ConcreteFacade2 extends AbstractFacade {    private AirConditioner mAirConditioner;    private Fan mFan;    private Light mLight;    private Television mTelevision;    public ConcreteFacade2() {        mAirConditioner = new AirConditioner();        mFan = new Fan();        mLight = new Light();        mTelevision = new Television();    }    @Override    public void on() {        mAirConditioner.on();        mFan.on();        mLight.on();        mTelevision.on();    }    @Override    public void off() {        mAirConditioner.off();        mFan.off();        mLight.off();        mTelevision.off();    }}
AirConditioner.java:
package com.rick.designpattern.facade;/** * Created by MyPC on 2017/6/5. */public class AirConditioner {    public void on(){        System.out.println("AirConditioner is on");    }    public void off(){        System.out.println("AirConditioner is off");    }}
Fan.java:
package com.rick.designpattern.facade;/** * Created by MyPC on 2017/6/5. */public class Fan {    public void on(){        System.out.println("Fan is on");    }    public void off(){        System.out.println("Fan is off");    }}
Light.java:
package com.rick.designpattern.facade;/** * Created by MyPC on 2017/6/5. */public class Light {    public void on(){        System.out.println("light is on");    }    public void off(){        System.out.println("light is off");    }}
Television.java:
package com.rick.designpattern.facade;/** * Created by MyPC on 2017/6/5. */public class Television {    public void on(){        System.out.println("Television is on");    }    public void off(){        System.out.println("Television is off");    }}


原创粉丝点击