外观设计模式
模式定义:
 外观模式实现了新子系统和功能的分离,让系统方法的调用的顺序看起来更加的有序。为子系统中的一组接口提供一个一直的界面,此模式定义了一个高层的接口,这个接口使得子系统更容易使用。引入外观设计模式后,Client只需要和外观模式的总接口facade交互,避免了复杂的和子系统进行交互。
 相当于在子系统和Client之间创建了一个超级的接口,这个接口中的内容是有效的整合子系统的类的功能。
 模式对象(角色)
 1.Facade(外观角色)
 知道子系统的功能,整合子系统的功能,负责和客户端的交互。
 会有几个常用的功能组合。
 2.Client(客户端)
 客户端是程序的入口,负责程序的执行,他要调用子系统的功能时,创建出外观角色,让外观角色去自己整合功能和调用功能。
 3.SubSystem(子系统)
 实现子系统的功能,并完成外观角色指派的任务。
直接上一个UML类图(自己画图板画的,特别丑,别介意)
 
 上代码:
 SubSystem
package facade;
public class Worker_01 {
	public void work() {
		System.out.println("第一个工人,工作......");
	}
	public void rest() {
		System.out.println("第一个工人,休息......");
	}
}
class Worker_02 {
	public void work() {
		System.out.println("第二个工人,工作......");
	}
	public void rest() {
		System.out.println("第二个工人,休息......");
	}
}
class Worker_03 {
	public void work() {
		System.out.println("第三个工人,工作......");
	}
	public void rest() {
		System.out.println("第三个工人,休息......");
	}
}
Facade
package facade;
public class Facade {
	private Worker_01 wk1;
	private Worker_02 wk2;
	private Worker_03 wk3;
	 
	public Facade() {
		if(null==wk1) {
			wk1 = new Worker_01();
		}
		if(null == wk2) {
			wk2 = new Worker_02();
		}if(null ==wk3){
			wk3 = new Worker_03();
		}
	}
	public void work() {
		wk1.work();
		wk2.work();
		wk3.work();
	}
	public void rest() {
		wk1.rest();
		wk2.rest();
		wk3.rest();
	}
}
Client(测试类)
public class Test {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Facade facade = new Facade();
		facade.work();
		facade.rest();
	}
}
输出结果:
 

 京公网安备 11010502036488号
京公网安备 11010502036488号