设计模式(八):外观模式

来源:互联网 发布:淘宝站外推广方式 编辑:程序博客网 时间:2024/05/16 15:38


外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

外观模式结构图:


例子:

1、创建外观类,煎饼果子类

/** * Facede外观类,煎饼果子类 */public class Pancake {}

2、创建子系统类

(1)生菜类

/** * Subclass子系统1,生菜类 */public class Lettuce {    public void addLettuce(){        System.out.println("加生菜");    }}

(2)烤肠类

/** *Subclass子系统2,烤肠类 */public class Sausage {    public void addSausage(){        System.out.println("加烤肠");    }}

(3)培根类

/** * Subclass子系统3,培根类 */public class Bacon {    public void addBacon(){        System.out.println("加培根");    }}


(4)辣椒类

/** * Subclass子系统4,辣椒类 */public class Pepper {    public void addPepper(){        System.out.println("多放辣");    }}

3、完善外观类,引入子系统,并创建不同的组合方法

/** * Facede外观类,煎饼果子类 */public class Pancake {    private Lettuce lettuce;//生菜    private Bacon bacon;//培根    private Pepper pepper;//辣椒    private Sausage sausage;//烤肠    public Pancake() {        lettuce=new Lettuce();        bacon=new Bacon();        pepper=new Pepper();        sausage=new Sausage();    }    /**     * 组合一     */    public void CombinationOne(){        System.out.println("煎饼果子来一套");        sausage.addSausage();        lettuce.addLettuce();    }    /**     * 组合二     */    public void CombinationTwo(){        System.out.println("煎饼果子来一套");        bacon.addBacon();        lettuce.addLettuce();        pepper.addPepper();    }}

4、测试

public class Test {    public static void main(String[] args) {        Pancake pancake=new Pancake();//创建外观类对象        pancake.CombinationOne();        System.out.println("---------");        pancake.CombinationTwo();    }}

运行结果:

煎饼果子来一套加烤肠加生菜---------煎饼果子来一套加培根加生菜多放辣




原创粉丝点击