3、如果应用需要,它并不限制它们使用子系统类。因此你可以在系统易用性和通用性之间加以选择。
图实例:
举例代码:
package design.facade;
/**
* 文件名称:ServiceA.java
* 创建人:Fei Wong
* 创建时间: Jun 29, 2012
* 电子邮箱
* */
public interface ServiceA {
/**
* ServiceA 的A方法
* */
public void methodA() ;
}
package design.facade;
/**
* 文件名称:ServiceAImpl.java
* 创建人:Fei Wong
* 创建时间: Jun 29, 2012
* 电子邮箱:
* */
public class ServiceAImpl implements ServiceA {
/* (non-Javadoc)
* @see design.facade.ServiceA#methodA()
*/
@Override
public void methodA() {
System.out.println( "methodA--> is runing" );
}
}
package design.facade;
/**
* 文件名称:ServiceB.java
* 创建人:Fei Wong
* 创建时间: Jun 29, 2012
* 电子邮箱:
* */
public interface ServiceB {
/**
* ServiceB 的B方法
* */
public void methodB() ;
}
package design.facade;
/**
* 文件名称:ServiceAImpl.java
* 创建人:Fei Wong
* 创建时间: Jun 29, 2012
* 电子邮箱:
* */
public class ServiceBImpl implements ServiceB {
/* (non-Javadoc)
* @see design.facade.ServiceA#methodA()
*/
@Override
public void methodB() {
System.out.println( "methodB--> is runing" );
}
}
package design.facade;
/**
* 文件名称:ServiceC.java
* 创建人:Fei Wong
* 创建时间: Jun 29, 2012
* 电子邮箱:
* */
public interface ServiceC {
/**
* ServiceC 的C方法
* */
public void methodC() ;
}
package design.facade;
/**
* 文件名称:ServiceAImpl.java
* 创建人:Fei Wong
* 创建时间: Jun 29, 2012
* 电子邮箱:
* */
public class ServiceCImpl implements ServiceC {
/* (non-Javadoc)
* @see design.facade.ServiceA#methodA()
*/
@Override
public void methodC() {
System.out.println( "methodC--> is runing" );
}
}
package design.facade;
/**
* 文件名称:Facade.java
* 创建人:Fei Wong
* 创建时间: Jun 29, 2012
* 电子邮箱:
*
* 外观模式 核心类
* */
public class Facade {
ServiceA sa;
ServiceB sb;
ServiceC sc;
public Facade() {
sa = new ServiceAImpl();
sb = new ServiceBImpl();
sc = new ServiceCImpl();
}
public void methodA() {
sa.methodA();
sb.methodB();
}
public void methodB() {
sb.methodB();
sc.methodC();
}
public void methodC() {
sc.methodC();
sa.methodA();
}
}
package design.facade;
/**
* 文件名称:Client.java
* 创建人:Fei Wong
* 创建时间: Jun 29, 2012
* 电子邮箱:
* */
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
ServiceA sa = new ServiceAImpl();
ServiceB sb = new ServiceBImpl();
sa.methodA();
sb.methodB();
System.out.println("=====================");
Facade f = new Facade();
f.methodA();
f.methodB();
f.methodC() ;
}
}