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

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、提高安全性,想访问子系统的那些业务就在门面类开通哪些逻辑,不在门面上开通的方法,访问不到。




原文地址:https://www.cnblogs.com/elgin-seth/p/5293767.html