您的位置:首页 > 其它

门面模式(外观模式):Facade

2011-03-27 12:19 190 查看
门面模式定义:
门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面对象进行.
门面模式提供一个高层次的接口,使得子系统更易于使用.
门面模式有俩个作用:1是简化类的接口;2是消除类与使用它的客户代码之间的耦合。

好处:减少项目的复杂度和依赖性。

项目举例:jdbc执行sql语句,非常的烦躁。 可以把它抽取到一个方法里,用时就调用。

解决问题:子接口繁多,调用复杂,减少客户与子系统之间的耦合。

生活中例子:房屋中介。

为什么要使用门面模式:
一般而言子系统和其他子系统之间,客户端和实现层之间存在这很大的依赖性,
引入Facade模式将一个子系统与它的客户端以及其他的子系统分离,
可以提高子系统的独立性和可移植行.
在构建一个层次化的系统的时候,可以使用Facade模式定义系统的每一层的入口,
如果层与层之间是相互依赖的,则可以限定他们仅通过Facade进行通信,
从而简化了层与层之间的依赖关系。
门面模式包括两种角色:门面角色和子系统角色.
门面角色:客户端可以调用的方法,此角色知晓一个或者多个子系统角色的功能和责任
子系统角色:可以同时包括一个或者多个子系统角色,不是单独的一个类,而是类的集合
class Client { //客户端通过安全门面来调用各个子系统 ,客户端角色
public static void main(String[] args) {
SecurityFacade sf = new SecurityFacade();
sf.active();
sf.inactive();
}
}
//子系统角色,是一个功能的集合,一般是很多类的一个集合
class Camera {

public void run(){
System.out.println("摄像机启动");
}
public void stop(){
System.out.println("摄像机停止");
}
}
class Ring {
public void run(){
System.out.println("门铃启动");
}
public void stop(){
System.out.println("门铃停止");
}
}
class Sensor {
public void run(){
System.out.println("监视器启动");
}
public void stop(){
System.out.println("监视器停止");
}
}
public class SecurityFacade { //门面角色
private Camera camera;
private Ring ring;
private Sensor sensor;
public SecurityFacade(){
camera=new Camera();
ring=new Ring();
sensor=new Sensor();
}
public void active(){
camera.run();
ring.run();
sensor.run();
}
public void inactive(){
camera.stop();
ring.stop();
sensor.stop();
}
}

三、特点:
子系统的独立性: 子系统对外提供一个统一简单的接口,可以减少系统间的耦合性,提高子系统的独立性和可移植性。
系统的层次性:在构建一个层次化的系统时,可以使用 Facade 模式定义系统中每一层的入口。如果层与层之间是相互依赖的,则可以限定它们仅通过 Facade 进行通信,从而简化层与层之间的依赖关系
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: