一. 門面模式
門面模式,又叫外觀模式,一個大的系統由若干個子系統構成,每個子系統中包含多個類,這些類協同合作為用戶提供所需要的功能,若直接和子類進行交互,則就形成了依賴關係,門面模式就是用來解決此問題的一個成熟模式.
二. 門面模式的UML類圖如下所示:
三. 現在用一個郵局的物流系統來模擬這個門面模式的實現,完整示例代碼如下:
1. 物流接口類
package structuralPattern.facade.facade1; /** * @ClassName: ILogistics * @Description:物流接口 * @author Liyongbin * @date 2011-2-9 上午11:20:48 * @version V1.0 */ public interface ILogistics { //發貨 public ILogistics sub_send(); //收貨 //public ILogistics sub_receive(); }
2. 郵局類
package structuralPattern.facade.facade1; /** * @ClassName: Postoffice * @Description:郵局類 * @author Liyongbin * @date 2011-2-9 上午11:21:31 * @version V1.0 */ public class Postoffice implements ILogistics{ // private Sub_measurement measurement; private Sub_package packaging; private Sub_weighIn weighIn; private Sub_countPrice countprice; private Sub_mailing miling; //無參構造器 public Postoffice() { super(); } //構造器 public Postoffice(Sub_measurement measurement, Sub_weighIn weighIn, Sub_package packaging, Sub_countPrice countprice, Sub_mailing amiling) { super(); this.measurement = measurement; this.weighIn = weighIn; this.packaging = packaging; this.countprice = countprice; this.miling = amiling; } //運送物品 @Override public ILogistics sub_send() { packaging.packaging(); measurement.measurement(); weighIn.weighIn(); countprice.countPrice(); miling.mailing(); return null; } }
3. 物品打包類
package structuralPattern.facade.facade1; /** * @ClassName: Sub_package * @Description:物品打包 * @author Liyongbin * @date 2011-2-9 上午11:34:16 * @version V1.0 */ public class Sub_package { public void packaging(){ System.out.println("流程開始"); System.out.println("包裝物品..."); } }
4. 量物品體積
package structuralPattern.facade.facade1; /** * @ClassName: Sub_measurement * @Description:量物品體積 * @author Liyongbin * @date 2011-2-9 上午11:32:56 * @version V1.0 */ public class Sub_measurement { public void measurement(){ System.out.println("測量物品體積..."); } }
5. 物品稱重
package structuralPattern.facade.facade1; /** * @ClassName: Sub_weighIn * @Description:物品稱重 * @author Liyongbin * @date 2011-2-9 上午11:31:29 * @version V1.0 */ public class Sub_weighIn { public void weighIn(){ System.out.println("稱物品重量..."); } }
6. 投遞物品
package structuralPattern.facade.facade1; /** * @ClassName: Sub_mailing * @Description:投遞物品 * @author Liyongbin * @date 2011-2-9 上午11:38:43 * @version V1.0 */ public class Sub_mailing { public void mailing(){ System.out.println("投遞物品..."); System.out.println("流程結束"); } }
7. 測試類
package structuralPattern.facade.facade1; /** * @ClassName: FacadeTest * @Description: 門面測試類 * @author Liyongbin * @date 2011-2-9 上午11:55:25 * @version V1.0 */ public class FacadeTest { public static void main(String[] args) { //實例化組件 Sub_measurement measurement = new Sub_measurement(); Sub_package packaging=new Sub_package(); Sub_weighIn weighIn= new Sub_weighIn(); Sub_countPrice countprice =new Sub_countPrice(); Sub_mailing miling =new Sub_mailing(); //實例化郵局 ILogistics lt= new Postoffice(measurement,weighIn,packaging,countprice,miling); //郵寄物品 lt.sub_send(); } }
8. 運行結果如下:
相关推荐
7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式...
C#设计模式(12)-Decorator Pattern 101 一、 装饰(Decorator)模式 101 二、 装饰模式的结构 102 三、 装饰模式示例性代码 103 四、 装饰模式应当在什么情况下使用 106 五、 装饰模式实际应用的例子 106 六、 ...
C#设计模式(12)-Decorator Pattern 一、 装饰(Decorator)模式 二、 装饰模式的结构 三、 装饰模式示例性代码 四、 装饰模式应当在什么情况下使用 五、 装饰模式实际应用的例子 六、 使用装饰模式的优点和...
门面模式【FACADE PATTERN】 适配器模式【ADAPTER PATTERN】 模板方法模式【TEMPLATE METHOD PATTERN】 建造者模式【BUILDER PATTERN】 桥梁模式【BRIDGE PATTERN】 命令模式【COMMAND PATTERN...
详细的jsp网络编程、常用设计模式! 前言 3 第一部分:网络编程 4 一、了解URL 4 二、读取URL中的资源 4 1、URL构造方法: 5 2、读取资源 5 三、INETADDRESS类 5 四、SOCKET类 6 1、Socket套接字连接 6 2、Socket...
23种模式(Pattern) 1、创建形模式: 1)、单用型:Singleton 2)、工厂方法型:Factory Method 3)、抽象工厂型:Abstract Factory 4)、原型:Prototype 5)、建造型:Builder 2、结构型模式:类与类之间的调用 1...
设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素...
Java设计模式 策略模式【STRATEGY PATTERN】 .................................................................................................. 4 第 2 章 代理模式【PROXY PATTERN】 ..........................
第 7 章 门面模式【FACADE PATTERN】 44 第 8 章 适配器模式【ADAPTER PATTERN】 51 第 9 章 模板方法模式【TEMPLATE METHOD PATTERN】 63 第 10 章 建造者模式【BUILDER PATTERN】 82 第 11 章...
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...