为什么要使用门面模式:
一般而言子系统和其他子系统之间,客户端和实现层之间存在这很大的依赖性,引入Facade模式将一个子系统与它的客户端以及其他的子系统分离,
可以提高子系统的独立性和可移植行.
在构建一个层次化的系统的时候,可以使用Facade模式定义系统的每一层的入口,如果层与层之间是相互依赖的,则可以限定他们仅通过Facade进行通信,
从而简化了层与层之间的依赖关系。
Facade外观模式:
为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。
例子:
将打开2个抽屉拿到文件看做一个子系统,那么为了降低客户端和子系统之间的耦合性,我们可以使用Facade模式。
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();
}
}
但是如果使用Facade外观模式,可新建一个Facade类,客户端和门面打交道,让门面和子系统打交道,子系统有什么改动,都不会影响到客户端的调用,最好是只需要改动门面类即可:
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();
}
}
分享到:
相关推荐
门面模式门面模式
什么是门面模式(Facade) 外部与一个子系统的通信必须通过一个统一的门面对象进行。这就是门面模式。 门面模式的结构 涉及两个角色: 门面角色:客户端可以调用这个角色的方法。此角色知道子系统的功能和责任。在...
门面模式门面模式门面模式
门面模式门面模式门面模式
设计模式C++学习之门面模式(Facade)
门面模式的Java实现版本和UML类设计图
设计模式之门面模式(Facade模式),介绍门面模式,实际例子分析,代码讲解等
用Java实现的门面模式,有源代码以及视频讲解。
C++设计模式课件14_Facade_门面模式.pdf
Android也架构之四:门面模式解析获取的html代码 文章详细地址: http://blog.csdn.net/michael_yy/article/details/7965168
设计模式之门面模式,最容易理解和上手的实例,值得学习
23种设计模式--门面模式
这是设计模式实训教程(第2版)相关是课程实验,主要有两个实验门面和代理
EJB的经典模式——门面模式EJB的经典模式——门面模式
NULL 博文链接:https://dada-fangfang.iteye.com/blog/1021146
1、门面模式(Facade) 用意:提供一个统一的接口去访问多个子系统的多个不同的接口,来控制访问的粒度。
门面模式入门,简单易懂
NULL 博文链接:https://lym6520.iteye.com/blog/707060
门面模式为子系统提供一个统一的高层接口,供外部客户使用。 门面模式提供了一个更高层次的接口,使得子系统更容易使用。
门面模式郭嘉模式定义:为子系统中的一组接口提供一个一致的接口,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用案例:* @author