• 对象结构型


    介绍

    * 将客户端代码封装在一起
    * 如现在调用可三个方法a,b,c , 现在将其调用步骤封装到方法d中,现在只需要调用d就行了
    

    定义

    * 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用
    

    优点

    * 降低客户端代码的耦合程度
    * 降低客户端对调用代码的了解程度,甚至可以一无所知
    

    使用场景

    * 降低系统复杂度
    

    图解

    图片来自CSDN博主 - lovelion

    入门案例:

    代码:

    [子系统(被调用)]

    SubSystem1:

    public class SubSystem1 {
        public void method(){
            System.out.println("SubSystem1的method被调用");
        }
    }
    

    SubSystem2:

    public class SubSystem2 {
        public void method(){
            System.out.println("SubSystem2的method被调用");
        }
    }
    

    SubSystem3:

    public class SubSystem3 {
        public void method(){
            System.out.println("SubSystem3的method被调用");
        }
    }
    

    [外观(门面)]

    Facade:

    public class Facade {
    
        private SubSystem1 s1;
        private SubSystem2 s2;
        private SubSystem3 s3;
    
        public Facade() {
            s1 = new SubSystem1();
            s2 = new SubSystem2();
            s3 = new SubSystem3();
        }
    
        public void method(){
            s1.method();
            s2.method();
            s3.method();
        }
    
    }
    

    测试:

    public class Main {
        public static void main(String[] args){
    
            //未使用外观(门面)模式之前
    /*
            SubSystem1 s1 = new SubSystem1();
            SubSystem2 s2 = new SubSystem2();
            SubSystem3 s3 = new SubSystem3();
            s1.method();
            s2.method();
            s3.method();
    */
    
            //使用外观(门面)模式之后
            Facade facade = new Facade();
            facade.method();
    
        }
    }
    
  • 相关阅读:
    远程获取图片尺寸
    python httplib get和post获取数据
    python 之 logging
    php artisan常用方法
    html页面制作css基本设置
    zlib-1.2.7/libpng-1.5.9 instead of zlib-1.2.8/libpng-1.6.6
    shell脚本自动拉起启动程序
    php截取中文无乱码
    路飞学城1之课程与课程详细
    vuex(数据商店实现思想)day06
  • 原文地址:https://www.cnblogs.com/tandi19960505/p/8179346.html
Copyright © 2020-2023  润新知