zoukankan      html  css  js  c++  java
  • 设计模式8:外观模式

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式向现有的系统添加一个接口,来隐藏系统的复杂性。

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

    使用:

    1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。

    2、定义系统的入口。

    这样做带来了外观类与系统的耦合,降低了客户端与系统的耦合。

    uml图:

    Facade类通过三个method方法对原有系统(SubSystem1、2、3)的方法进行包装,方便客户端调用。

    代码:

    SuperSystem及其子类:

    public abstract class SuperSystem {
    	
    	public abstract void method();
    
    }
    
    public class SubSystem1 extends SuperSystem {
    
    	@Override
    	public void method() {
    		System.out.println("sub system 1");
    	}
    
    }
    
    public class SubSystem2 extends SuperSystem {
    
    	@Override
    	public void method() {
    		System.out.println("sub system 2");
    	}
    
    }
    
    public class SubSystem3 extends SuperSystem {
    
    	@Override
    	public void method() {
    		System.out.println("sub system 3");
    	}
    
    }
    

    Facade类:

    public class Facade {
    	
    	private SuperSystem sub1 = null;
    	private SuperSystem sub2 = null;
    	private SuperSystem sub3 = null;
    	
    	public Facade() {
    		sub1 = new SubSystem1();
    		sub2 = new SubSystem2();
    		sub3 = new SubSystem3();
    	}
    	
    	public void methodA() {
    		sub1.method();
    		sub2.method();
    	}
    	
    	public void methodB() {
    		sub2.method();
    		sub3.method();
    	}
    	
    	public void methodC() {
    		sub1.method();
    		sub3.method();
    	}
    }
    

    Demo类:

    public class FacadeDemo {
    	
    	public static void main(String[] args) {
    		Facade facade = new Facade();
    		facade.methodA();
    		facade.methodB();
    		facade.methodC();
    	}
    	
    }
    

      

      

  • 相关阅读:
    不用写代码的框架
    bat执行python脚本,执行多条命令
    VMware-workstation-full-15.1.0-13591040安装破解-附件密钥
    w10谷歌chrome关闭自动更新
    谷歌安装提示已经安装高版本解决
    python项目三方库导出导入 requirements.txt文件
    点阴影
    goto gamedev blog
    20135315-信息安全系统设计基础第五周学习总结
    win10 +python3.6环境下安装opencv以及pycharm导入cv2有问题的解决办法
  • 原文地址:https://www.cnblogs.com/zcy-backend/p/6684150.html
Copyright © 2011-2022 走看看