• 设计模式学习(十) 外观模式


    迪米特法则(最少知识原则):

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

    外观模式核心:

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

    以办理公司为例:

    package com.lp.facade;
    
    public interface 工商局 {
        void checkName();
    }
    
    class 海淀区工商局 implements 工商局{
    
        @Override
        public void checkName() {
            System.out.println("检查名字是否有冲突");
            
        }
        
    }
    工商局
    package com.lp.facade;
    
    public interface 税务局 {
        void taxCertificate();
    }
    
    class 海淀税务局 implements 税务局{
    
        @Override
        public void taxCertificate() {
            System.out.println("在海淀税务局办理税务登记");
            
        }
        
    }
    税务局
    package com.lp.facade;
    
    public interface 银行 {
        void openAccount();    //开户
    }
    
    class 中国工商银行 implements 银行{
    
        @Override
        public void openAccount() {
            System.out.println("在中国工商银行开户");
            
        }
        
    }
    银行
    package com.lp.facade;
    
    public interface 质检局 {
        void orgCodeCertificate(); //办理组织机构代码证
    }
    
    class 海淀质检局 implements 质检局{
    
        @Override
        public void orgCodeCertificate() {
            System.out.println("在海淀区质检局办理组织机构代码证");
            
        }
        
    }
    质检局
    package com.lp.facade;
    
    /*办理注册流程的门面对象*/
    public class RegisterFacade {
        public void register(){
            工商局  a = new 海淀区工商局();
            a.checkName();
            质检局  b = new 海淀质检局();
            b.orgCodeCertificate();
            税务局 c = new 海淀税务局();
            c.taxCertificate();
            银行 d = new 中国工商银行();
            d.openAccount();
            
        }
    }
    办理注册流程的门面对象
    package com.lp.facade;
    
    public class Client {
        public static void main(String[] args){
            new RegisterFacade().register();
        }
    }
    客户端

    结果:

  • 相关阅读:
    centos8.2安装nginx
    Centos8安装PostgreSQL
    PostgreSQL 安装时提示下载元数据失败
    MySQL8定时备份
    Centos8安装Docker
    Centos8安装中文字体
    Centos8源码安装libgdiplus
    MySQL拖拽排序
    MySQL8修改事务隔离级别
    MySQL启动问题
  • 原文地址:https://www.cnblogs.com/lipeng0824/p/4433696.html
Copyright © 2020-2023  润新知