外观模式,英文表述为Facade。
外观模式,为了子系统中的一组接口提供一个一致的界面,次模式定义了一个高层接口,
这个接口使得这一子系统更加容易使用。
通俗的讲,比如有很多机器,他们分别可以完成不同的功能,你可以自己直接按照流程
去操作他们,也可以招一个大管家,直接跟他说你想什么,让他去操作就行了。
外观模式还是很好理解的,先看看类图熟悉下框架结构:
其中包括四个子系统,以及一个大管家Facade类,User为客户端使用类,
在实际运行中,User只要调用Facade类的方法就行了。
下面看类源代码:
SubSystemOne类:
package com.blog.anla.Facade;
public class SubSystemOne {
public void methodOne(){
System.out.println("I am method one!");
}
}
SubSystemTwo类:
package com.blog.anla.Facade;
public class SubSystemTwo {
public void methodTwo(){
System.out.println("I am method two!");
}
}
SubSystemThree类:
package com.blog.anla.Facade;
public class SubSystemThree {
public void methodThree(){
System.out.println("I am method three!");
}
}
SubSystemFour类:
package com.blog.anla.Facade;
public class SubSystemFour {
public void methodFour(){
System.out.println("I am method four!");
}
}
Facade类:
package com.blog.anla.Facade;
/**
* Facade外观类,知道那些子系统类负责处理
* 请求,将客户的请求代理给适当的子系统对象
* @author U-ANLA
*
*/
public class Facade {
private SubSystemOne one;
private SubSystemTwo two;
private SubSystemThree three;
private SubSystemFour four;
public Facade(){
one = new SubSystemOne();
two = new SubSystemTwo();
three = new SubSystemThree();
four = new SubSystemFour();
}
public void methodA(){
System.out.println("集成方法A");
one.methodOne();
two.methodTwo();
three.methodThree();
}
public void methodB(){
System.out.println("集成方法B");
three.methodThree();
four.methodFour();
one.methodOne();
}
}
User类:
package com.blog.anla.Facade;
/**
* 客户端类,使用Facade的类
* @author U-ANLA
*
*/
public class User {
public static void main(String[] args) {
Facade facade = new Facade();
facade.methodA();
facade.methodB();
}
}
赠人玫瑰手留余香(oo)