第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(); } } |