java 门面模式_Java门面模式

一、简介

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

二、结构及使用场景

283d36d0df8486230db9b6a373902d3f.png

如上所示,可以很简单明了的看出,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...");

}

}

}

运行结果:

e2b05c82b8303873b08f36f744da7a98.png

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

三、优缺点

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值