zoukankan      html  css  js  c++  java
  • Java门面模式

    一、简介

      隐藏系统的复杂性,对外提供统一的访问入口,外部系统访问只通过此暴露出的统一接口访问。是一种结构型模式。封装子系统接口的复杂性,提供统一的对外接口,能够使子系统更加简单的被使用。

    二、结构及使用场景

    如上所示,可以很简单明了的看出,Facede就是将复杂的底层系统,封装到一个统一的接口,更简单的提供给外部客户端使用。其中,涉及角色:

      1、客户端client角色:通过调用facede门面,来调用服务,完成功能

      2、门面facede角色:子系统服务和客户端的纽带。通过特定的需求,可以封装子系统接口,提供统一接口供客户端使用

      3、子系统角色:真正处理任务的地方。

    使用场景:封装复杂的子系统,提供统一简单的对外服务接口

    三、代码简例

    package com.cfang.oTest;
    
    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    public class TestFacede {
    
    	/*
    	 * 	client调用
    	 */
    	public static void main(String[] args) {
    		Facede facede = new Facede();
    		facede.open();
    		log.info("========");
    		facede.close();
    	}
    	
    	/*
    	 * 	Facede
    	 */
    	static class Facede{
    		private SystemA systemA;
    		private SystemB systemB;
    		public Facede(){
    			systemA = new SystemA();
    			systemB = new SystemB();
    		}
    		public void open() {
    			systemA.openA();
    			systemB.openB();
    		}
    		
    		public void close() {
    			systemA.closeA();
    			systemB.closeB();
    		}
    	}
    	
    	/*
    	 * 	子系统A
    	 */
    	static class SystemA{
    		public void openA(){
    			log.info("open a...");
    		}
    		public void closeA(){
    			log.info("close a...");
    		}
    	}
    	/*
    	 * 	子系统B
    	 */
    	static class SystemB{
    		public void openB(){
    			log.info("open b...");
    		}
    		public void closeB(){
    			log.info("close b...");
    		}
    	}
    }
    

      运行结果:

    以上可以看出,有了facede,客户端如果想做开启子系统的时候,不需要知道具体的open细节,如何open,直接通过facede中提供的统一open即可完成。

    三、优缺点

          优点:1、解耦 - 客户端与子系统解耦,不需要关注子系统如何实践,只需要跟facede交互即可

           2、更好的划分系统接口:对内和对外的接口,可以做很好的区别划分

  • 相关阅读:
    html5 桌面提醒:Notifycations
    windows 下 apache 的虚拟主机配置
    javascript 跨域
    javascript 类型数组读取二进制数据
    javascript parseInt() 函数的进制转换陷阱
    javascript 中几个与正则表达式相关的应用
    javascript 中的二进制运算
    一段小代码,发布网页时为js 、css 文件加上版本号
    base64 编码及解码
    PHP 的比较运算与逻辑运算
  • 原文地址:https://www.cnblogs.com/eric-fang/p/11316913.html
Copyright © 2011-2022 走看看