门面模式

面临问题:

只需要使用某个复杂系统的子集,或者,需要以一种特殊的方式与系统进行交互。

如何“简化外部客户程序和系统间的交互接口” ?如何将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦?

解决方案:

Façade为原有系统的Client提供了一个新的接口。外部与一个子系统的通信必须通过一个统一的门面(Façade)对象进行,这就是门面模式。


典型的外观角色代码:

public class Facade
{
private SubSystemA obj1 = new SubSystemA();
private SubSystemB obj2 = new SubSystemB();
private SubSystemC obj3 = new SubSystemC();
public void method()
{
obj1.method();
obj2.method();
obj3.method();
}
}



从客户程序的角度来看,Façade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果----内部子系统的任何变化不会影响到Façade接口的变化 。



相关的模式:


Abstract Factory模式可以与Façade模式一起使用以提供一个接口,这一接口可用来以一种子系统独立的方式创建子系统对象。
Mediator模式与Façade模式的相似之处是,它抽象了一些已有的类的功能。
通常仅需要一个Façade对象,因此可以用Singleton模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值