facade java_Java中的Facade模式

facade java_Java中的Facade模式什么是 Facade 模式随着系统越来越复杂 我们需要把细节隐藏起来 给客户端提供一个统一的接口 在这种需求下 facade 模式诞生了 该模式比较简单 我们只需要在系统变得复杂把它运用上来 这样底层跟客户端就能够很大程度上解耦 比如你基于平台做业务开发 那么一种很多的方式是 平台把所有底层逻辑封装进 facade 模式 开发着只需要通过 facade 就可以知道平台大部分功能 它相当于开发者与平台之间的一种

什么是Facade模式

随着系统越来越复杂,我们需要把细节隐藏起来,给客户端提供一个统一的接口。在这种需求下facade模式诞生了。该模式比较简单,我们只需要在系统变得复杂把它运用上来,这样底层跟客户端就能够很大程度上解耦。

比如你基于平台做业务开发,那么一种很多的方式是,平台把所有底层逻辑封装进facade 模式。开发着只需要通过facade 就可以知道平台大部分功能。它相当于开发者与平台之间的一种约定。

facade 模式大概框架

facade的基本架构:

public class SystemFacade()

{

subSystemImpl1;

subSystemImpl2;

subSystemImpl3;

public void runSystem()

{

subSystemImpl1.run();

subSystemImpl2.run();

subSystemImpl3.run();

}

}

1.通过SystemFacade,我们只需要调用runSystem接口就可以把所有子系统跑起来。

我们可以让SystemFacade实现其接口,让其拥有接口对象。

public interface SystemFacade extends SubSystem1,SubSystem2,SubSystem3()

{

public void runSystem();

}

public class SystemFacadeImpl implements SystemFacade()

{

subSystem1;

subSystem2;

subSystem3;

public void runSystem()

{

subSystem1.run();

subSystem2.run();

subSystem3.run();

}

}

Facade模型在工作中的应用

public interface ServiceFacade extends MetaDataService, FunctionPrivilegeService, LogService, ApprovalFlowService, ValidateRuleService,…… {

void registerService(Class var1, T var2);

T getService(Class var1);

……

T triggerAction(ActionContext var1, A var2);

}

@Service(“serviceFacade”)

public class ServiceFacadeImpl implements ServiceFacade {

private static final Logger log = LoggerFactory.getLogger(ServiceFacadeImpl.class);

private Map, Object> serviceMap = Maps.newHashMap();

@Autowired

private MetaDataService metaDataService;

@Autowired

private ExportService exportService;

……

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227610.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午8:55
下一篇 2026年3月16日 下午8:55


相关推荐

  • java mysql 分区表_mysql分区表

    java mysql 分区表_mysql分区表对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装。mysql在创建表时使用PARTITIONBY子句定义每个分区存放的数据。在执行查询的时候,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询就无须扫描所有分区——只需要查询包含需要数据的分区就可以了。分区的一个主要目的是将数据按照一个较粗的粒度分在不同的表中,这样做可…

    2022年6月7日
    132
  • AI绘画大全:Midjourney+gpt最新注册和使用教程,Midjourney13000+AI绘画关键词描述词等(教程+软件)AI绘画秘籍,Midjourney+GPT教程全解析,13000+AI绘画关键词深度解读

    AI绘画大全:Midjourney+gpt最新注册和使用教程,Midjourney13000+AI绘画关键词描述词等(教程+软件)AI绘画秘籍,Midjourney+GPT教程全解析,13000+AI绘画关键词深度解读

    2026年3月15日
    2
  • 疫情来临,车辆长期停放需注意

    汽车界有一句话,“车不是开坏的,而是放坏的。”这段时间,许多人因疫情无法外出,无奈车辆只能闲置,但车辆长期不开很是伤车怎么办?勿慌,这就为您支招,降低闲置期间汽车受损的风险。 车辆…

    2021年6月21日
    295
  • bowtie和bowtie2使用条件区别及用法

    bowtie和bowtie2使用条件区别及用法一 转录组还是基因组 map 常用的工具有 bowtie bowtie2 BWA SOAP1 SOAP2 等 这个问题又会被分成两个问题 是基因组测序 DNA seq 还是转录组测序 mRNA seq 其中的区别是对于真核生物而言 mRNA 序列与 DNA 序列并不完全相同 在经历了后剪切之后 成熟的 mRNA 可能是原基因的一部分 甚至顺序及个别碱基会产生变化 如果是 mRNA 测序 那 map 工作就会在

    2025年6月16日
    12
  • C#的WinForm窗体程序中如何设置TextBox为密码文本框

    C#的WinForm窗体程序中如何设置TextBox为密码文本框C#的WinForm窗体程序中如何设置TextBox为密码文本框-2019-08-0323:59在C#的WinForm窗体程序开发过程中,TextBox是常用的文本框控件,默认的TextBox

    2022年7月1日
    22
  • linux修改密码策略

    linux修改密码策略对于用户账户的管理是系统管理员最重要的工作之一。尤其是,对于任何自称安全的linux系统,最受关心的应该是密码安全问题。在本教程中,我将介绍如何在linux上设置严密的密码策略。我假设你的linux系统是最近的linux发行版,那么你正在使用的应该是PAM(可插拔认证模块)。**1.准备**安装一个PAM模块来启用cracklib支持,这可以提供额外的密码检查功能。在Debin,Ubuntu或者LinuxMint使用命令:sudoapt-getinstalllibpam-crackli

    2025年9月20日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号