首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

java设计形式-[结构模式]-门面模式[decorator pattern]

2012-10-25 
java设计模式--[结构模式]--门面模式[decorator pattern]?一. 門面模式???? 門面模式,又叫外觀模式,一個大

java设计模式--[结构模式]--门面模式[decorator pattern]

?一. 門面模式

???? 門面模式,又叫外觀模式,一個大的系統由若干個子系統構成,每個子系統中包含多個類,這些類協同合作為用戶提供所需要的功能,若直接和子類進行交互,則就形成了依賴關係,門面模式就是用來解決此問題的一個成熟模式.

?

二. 門面模式的UML類圖如下所示:
????? java设计形式-[结构模式]-门面模式[decorator pattern]
?

三. 現在用一個郵局的物流系統來模擬這個門面模式的實現,完整示例代碼如下:

?

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;}//運送物品@Overridepublic 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. 運行結果如下:
??? java设计形式-[结构模式]-门面模式[decorator pattern]

热点排行