3、如果应用需要,它并不限制它们使用子系统类。因此你可以在系统易用性和通用性之间加以选择。
图实例:
举例代码:
package design.facade; /** * 文件名称:ServiceA.java * 创建人:Fei Wong * 创建时间: Jun 29, 2012 * 电子邮箱:[email protected] * */ public interface ServiceA { /** * ServiceA 的A方法 * */ public void methodA() ; } package design.facade; /** * 文件名称:ServiceAImpl.java * 创建人:Fei Wong * 创建时间: Jun 29, 2012 * 电子邮箱:[email protected] * */ 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 * 电子邮箱:[email protected] * */ public interface ServiceB { /** * ServiceB 的B方法 * */ public void methodB() ; } package design.facade; /** * 文件名称:ServiceAImpl.java * 创建人:Fei Wong * 创建时间: Jun 29, 2012 * 电子邮箱:[email protected] * */ 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 * 电子邮箱:[email protected] * */ public interface ServiceC { /** * ServiceC 的C方法 * */ public void methodC() ; } package design.facade; /** * 文件名称:ServiceAImpl.java * 创建人:Fei Wong * 创建时间: Jun 29, 2012 * 电子邮箱:[email protected] * */ 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 * 电子邮箱:[email protected] * * 外观模式 核心类 * */ 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 * 电子邮箱:[email protected] * */ 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() ; } }