门面模式

为什么要使用门面模式:
一般而言子系统和其他子系统之间,客户端和实现层之间存在这很大的依赖性,引入Facade模式将一个子系统与它的客户端以及其他的子系统分离,[size=medium][color=red]可以提高子系统的独立性和可移植行.[/color][/size]
在构建一个层次化的系统的时候,可以使用Facade模式定义系统的每一层的入口,如果层与层之间是相互依赖的,则可以限定他们仅通过Facade进行通信,[color=red][size=medium]从而简化了层与层之间的依赖关系。[/size][/color]


Facade外观模式:

为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。
例子:[color=red][size=medium]将打开2个抽屉拿到文件看做一个子系统,那么为了降低客户端和子系统之间的耦合性,我们可以使用Facade模式[/size][/color]。



public class DrawerOne {

public void open(){

System.out.println("第一个抽屉被打开了");
getKey();
}

public void getKey(){
System.out.println("得到第二个抽屉的钥匙");
new DrawerTwo().open();
}

}


2.DrawerTwo.java
public class DrawerTwo {      
public void open() {
System.out.println("第二个抽屉被打开了");
getFile();
}

public void getFile() {
System.out.println("得到这个重要文件");
}
}

则通常为了拿到“重要文件”需要如下代码实现:
public class Client {    
public static void main(String[] args) {
DrawerOne darwerOne = new DrawerOne();
darwerOne.open();

}
}

[size=medium][color=red]但是如果使用Facade外观模式,可新建一个Facade类,客户端和门面打交道,让门面和子系统打交道,子系统有什么改动,都不会影响到客户端的调用,最好是只需要改动门面类即可[/color][/size]:
public class DrawerFacade { 
DrawerOne darwerOne=new DrawerOne();
public void open(){
darwerOne.open();

}
}


则此时调用的代码修改为:
public class Client {        
public static void main(String[] args) {
DrawerFacade drawer=new DrawerFacade();
drawer.open();
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值