您的位置:首页 > 编程语言 > Java开发

Java设计模式----外观模式(Facade)

2015-10-26 13:56 573 查看
1. 外观模式的定义:

外观模式,也叫作门面模式,是一种常见的封装模式,要求一个子系统外部与其内部的通信通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用。

外观模式注重“统一的”接口,外部只能通过这个接口来访问子系统,除了这个接口不允许单独访问子系统的行为发生。

2. 外观模式的角色说明:

--Facade门面角色

此角色知晓子系统的所有功能和责任,一般情况下,本角色会把客户端发来的请求分配到各个子系统中去,这也说明此角色并没有实际的业务逻辑,只是一个委托类。

--SubSystemClasses子系统角色

可以同时有一个或多个子系统,一个子系统不是一个单独的类,而是一个类的集合。子系统不知道门面角色类的存在,对于子系统来说,门面角色类只是另一个客户端而已。

3. 通用实例代码:

子系统类:

public class ClassA {

public void doSomethingA(){
System.out.println("do something a");
}
}


public class ClassB {

public void doSomethingB(){
System.out.println("do something b");
}
}


public class ClassC {

public void  doSomethingC(){
System.out.println("do something c");
}
}


门面角色类Facade:

public class Facade {

//被委托对象
private ClassA  ca;
private ClassB  cb;
private ClassC  cc;

public Facade() {
this.ca=new ClassA();
this.cb=new ClassB();
this.cc=new ClassC();
}

//提供给外部的访问方法
public void  doSomethingA(){
this.ca.doSomethingA();
}

public void  doSomethingB(){
this.cb.doSomethingB();
}

public void doSomrthingC(){
this.cc.doSomethingC();
}
}
客户端测试类:

public class Test {

public static void main(String[] args) {

Facade fd=new Facade();

fd.doSomethingA();
fd.doSomethingB();
fd.doSomrthingC();
}
}
4.外观模式的优点:

a、减少系统间的依赖,所有的以来都是对门面对象的依赖,与子系统无关

b、提高了灵活性,不管子系统内部怎么变化,只要不影响门面对象,任你自由活动

c、提高安全性,想访问子系统的那些业务就在门面类开通哪些逻辑,不在门面上开通的方法,访问不到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: