Java设计模式学习-外观模式/门面模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40646143/article/details/85228311

迪米特法则(最少只是原则):

  • 一个软件实体应当尽可能少的与其他实体发生相互作用。

外观模式核心:

  • 为子类系统提供统一的入口, 封装子系统的复杂性 ,便于客户端调用 。

使用外观模式模拟注册公司的流程,uml图如下

1),创建工商局类

/**工商局接口类
 * @author 晓电脑
 */
public interface GongShangJu {
    void register();
}



class ShangHaiGongShangJu implements GongShangJu{

    @Override
    public void register() {
        System.out.println("工商局登记公司名称");
    }
}

2),创建质监局

/**质监局
 * @author 晓电脑
 */
public interface ZhiJianJu {
    void testing();
}

class ShangHaiZhiJianJu implements ZhiJianJu{

    @Override
    public void testing() {
        System.out.println("在质监局登记");
    }
}

3),创建银行类

/**银行
 * @author 晓电脑
 */
public interface Bank {
    void openAccount();
}
class ShangHaiBank implements Bank{

    @Override
    public void openAccount() {
        System.out.println("到银行办理公司账号");
    }
}

4),创建税务局

/**税务局
 * @author 晓电脑
 */
public interface ShuiWuJu {
    void payTaxes();
}

class ShangHaiShuiWuJu implements ShuiWuJu{

    @Override
    public void payTaxes() {
        System.out.println("到税务局办理交税业务");
    }
}

5),创建门面类 ,对处理流程进行封装,对外提供统一的入口

/** 处理办理公司的流程
 * @author 晓电脑
 */
public class Appearance {
    public void process(){
        GongShangJu gongShangJu=new ShangHaiGongShangJu();
        gongShangJu.register();
        ZhiJianJu zhiJianJu=new ShangHaiZhiJianJu();
        zhiJianJu.testing();
        ShuiWuJu shuiWuJu=new ShangHaiShuiWuJu();
        shuiWuJu.payTaxes();
        Bank bank=new ShangHaiBank();
        bank.openAccount();
    }
}

6),模拟客户办理公司客户端

/**模拟开公司 的业务流程
 * 外观模式
 * @author 晓电脑
 */
public class Client {
    public static void main (String[] args) {
        Appearance appearance = new Appearance();
        appearance.process();
    }
}

运行结果

                 

外观模式开发中常见的场景:

  • 使用频率很高,哪里都会遇见,各种技术和框架中, 都有外观模式的使用如下
  • 1),JDBC封装后的,commons提供的DBUtils类,
  • 2),Hibernate提供的工具类
  • 3),Spring JDBC工具类 等等

与适配器模式的区别

  1. 这样的实现方式非常类似适配器模式,然而外观模式与适配器模式不同的是:适配器模式是将一个对象包装起来以改变其接口,而外观是将一群对象 ”包装“起来以简化其接口。它们的意图是不一样的,适配器是将接口转换为不同接口,而外观模式是提供一个统一的接口来简化接口

猜你喜欢

转载自blog.csdn.net/qq_40646143/article/details/85228311