第0章:简介
外观模式定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
外观模式本质:封装交互,简化调用
参考:研磨设计模式(书籍),大话设计模式(书籍)
模式图:
待补充
第1章:实践
第0节:全部功能外观模式
(1)接口1(Intf1.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade; /** * 接口1 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午8:43 */ public interface Intf1 { public void someMethod(); } |
(2)接口1实现类(Intf1Impl.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade; /** * 接口1实现类 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午8:44 */ public class Intf1Impl implements Intf1 { @Override public void someMethod() { System.out.println("接口1实现类"); } } |
(3)接口2.java
package com.mcc.core.designPattern.structure.facade.simpleFacade; /** * 接口2 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午8:44 */ public interface Intf2 { public void someMethod(); } |
(4)接口2实现类(Intf2Impl.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade; /** * 接口2实现类 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午8:45 */ public class Intf2Impl implements Intf2 { @Override public void someMethod() { System.out.println("接口2实现类"); } } |
(5)外观类(Facade.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade; /** * 外观类 * * 外观模式的定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 * 外观模式的本质:封装交互,简化调用 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午8:46 */ public class Facade { /** * 外观入口,这里可以用单例模式实现 */ public void entrance(){ Intf1 intf1 = new Intf1Impl(); intf1.someMethod(); Intf2 intf2 = new Intf2Impl(); intf2.someMethod(); } } |
(6)客户端测试(Client.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade; /** * 客户端测试 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午8:56 */ public class Client { public static void main(String args[]){ //通过外观调用 new Facade().entrance(); } } |
第1节:部分功能外观模式(控制访问)
(1)接口1(Intf1.java)
package com.mcc.core.designPattern.structure.facade.complexFacade; /** * 接口1 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午8:59 */ public interface Intf1 { public void method1A(); public void method1B(); } |
(2)接口1实现类(Intf1Impl.java)
package com.mcc.core.designPattern.structure.facade.complexFacade; /** * 接口1实现类 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午9:00 */ public class Intf1Impl implements Intf1 { @Override public void method1A() { System.out.println("接口1实现类方法1A,系统内部使用"); } @Override public void method1B() { System.out.println("接口1实现类方法1B,系统外部使用"); } } |
(3)接口2(Intf2.java)
package com.mcc.core.designPattern.structure.facade.complexFacade; /** * 接口2 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午9:03 */ public interface Intf2 { public void method2A(); public void method2B(); } |
(4)接口2实现类(Intf2Impl.java)
package com.mcc.core.designPattern.structure.facade.complexFacade; /** * 接口2实现类 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午9:04 */ public class Intf2Impl implements Intf2 { @Override public void method2A() { System.out.println("接口2实现类方法2A,系统内部使用"); } @Override public void method2B() { System.out.println("接口2实现类方法2B,系统外部使用"); } } |
(5)外观接口(FacadeIntf.java)
package com.mcc.core.designPattern.structure.facade.complexFacade; /** * 外观接口,外部访问 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午9:11 */ public interface FacadeIntf { public void method1B(); public void method2B(); } |
(6)外观实现类(FacadeImpl.java)
package com.mcc.core.designPattern.structure.facade.complexFacade; /** * 外观实现类 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午9:12 */ public class FacadeImpl implements FacadeIntf { @Override public void method1B() { new Intf1Impl().method1B(); } @Override public void method2B() { new Intf2Impl().method2B(); } } |
(7)客户端测试(Client.java)
package com.mcc.core.designPattern.structure.facade.complexFacade; /** * 客户端测试 * * @author <a href="mailto:[email protected]">menergy</a> * DateTime: 14-3-11 下午9:13 */ public class Client { public static void main(String args[]){ //调用外观接口方法 FacadeIntf facadeIntf = new FacadeImpl(); facadeIntf.method1B(); facadeIntf.method2B(); } } |