为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更容易使用.
很常用,较好体现了依赖倒转原则和迪米特法则思想.
Facade.java
package com.gary.designpattern.facade;
/**
* Facade类,需要了解子功能,并组合
* @author gary
*
*/
public class Facade {
/**
* 组合hello方法,供其它方法调用
*/
public void sayHello(){
System.out.println("say hello:");
new HelloA().helloA();
new HelloB().helloB();
}
/**
* goodbye
*/
public void sayGoodBye(){
System.out.println("say goodbye:");
new GoodByeA().goodByeA();
}
}
HelloA.java
package com.gary.designpattern.facade;
/**
* HelloA
* @author gary
*
*/
public class HelloA {
public void helloA(){
System.out.println("HelloA");
}
}
HelloB.java
package com.gary.designpattern.facade;
/**
* HelloB
* @author gary
*
*/
public class HelloB {
public void helloB(){
System.out.println("HelloB");
}
}
GoodByeA.java
package com.gary.designpattern.facade;
/**
* GoodByeA
* @author gary
*
*/
public class GoodByeA {
public void goodByeA(){
System.out.println("GoodByeA");
}
}
Test.java
package com.gary.designpattern.facade;
/**
* 测试
* @author gary
*
*/
public class Test {
public static void main(String[] args) {
Facade facade = new Facade();
//只需调用sayHello,不需要知道具体都调用了哪个方法
facade.sayHello();
System.out.println("======split======");
facade.sayGoodBye();
}
}