java设计模式十二之外观模式

前言:

    外观模式,也叫Facade模式,当外部客户端与子系统通信时,通过外观对象进行通信。外观对象提供了调用子系统的各种接口。一般可以把外观对象设置成单例的。

优点:

    降低调用者与子系统的耦合,隐藏了子系统的实现细节,同时更利于维护


怎么实现:

    Facede外观对象:对子系统进行封装调用

    子系统对象:可能存在多个

    调用者:客户端调用者


代码:

    子系统A:

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:32
 **/
public class ModuleA {
    public void aMethod(){
        System.out.println("我是A系统方法");
    }
}

子系统B:

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:32
 **/
public class ModuleB {
    public void bMethod(){
        System.out.println("我是B系统方法");
    }
}

子系统C:

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:32
 **/
public class ModuleC {
    public void cMethod(){
        System.out.println("我是C系统方法");
    }
}

外观对象:里面封装了各种组合调用子系统的方法

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:33
 *
 * 外观对象,提供过了对子系统的封装,
 * 外部客户端通过调用外观对象对内部系统进行访问。避免子系统内部实现细节
 **/
public class Facade {
    private ModuleA moduleA;
    private  ModuleB moduleB;
    private ModuleC moduleC;
    public Facade(){
        moduleA = new ModuleA();
        moduleB = new ModuleB();
        moduleC = new ModuleC();
    }

    public void doABC(){
        moduleA.aMethod();
        moduleB.bMethod();
        moduleC.cMethod();
    }

    public void doAB(){
        moduleA.aMethod();
        moduleB.bMethod();
    }
    public void doAC(){
        moduleA.aMethod();
        moduleC.cMethod();
    }
}


客户端调用者:

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:23
 **/
public class App {
    public static void main(String[] args) {
        Facade facade= new Facade();
        facade.doAB();
    }
}

我的github代码地址

猜你喜欢

转载自blog.csdn.net/u012326462/article/details/80865636