码迷,mamicode.com
首页 > 编程语言 > 详细

java门面模式

时间:2019-08-07 19:18:12      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:简单   sea   ima   sys   图片   结构型模式   nbsp   系统   slf4j   

一、简介

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

二、结构及使用场景

技术图片

如上所示,可以很简单明了的看出,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、更好的划分系统接口:对内和对外的接口,可以做很好的区别划分

java门面模式

标签:简单   sea   ima   sys   图片   结构型模式   nbsp   系统   slf4j   

原文地址:https://www.cnblogs.com/eric-fang/p/11316913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!