`

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

阅读更多

 一. 門面模式

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

 

二. 門面模式的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. 運行結果如下:
   

  • 大小: 13.9 KB
  • 大小: 7 KB
1
4
分享到:
评论

相关推荐

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    Java设计模式经典搞笑珍藏

    《Java设计模式经典搞笑珍藏》这本书通过将设计模式的学习与幽默元素相结合,使得读者在轻松愉快的氛围中学习到专业的设计模式知识。书籍不仅涵盖了多种设计模式,还强调了设计原则的重要性,并且根据读者的编程水平...

    java设计模式

    ### Java设计模式详解 #### 一、概述 Java设计模式是一种软件工程领域的概念,它提供了一套被广泛接受的、经过验证的解决方案,用于解决在软件设计过程中出现的常见问题。设计模式并不是完成任务的具体代码,而是...

    java设计模式(电子书)

    《Java设计模式》是一本详尽介绍Java设计模式的电子书,旨在帮助不同层次的开发者提升他们的编程设计能力。本书涵盖了23种经典的设计模式,包括策略模式、代理模式、单例模式、多例模式等,旨在让读者理解如何编写出...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式...

    java模式-java中的所有模式-java进阶必备···

    ### Java设计模式详解 #### 一、创建型模式 **1. 工厂方法模式(Factory Method)** - **定义**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 - **应用场景*...

    java24种设计模式.pdf

    本书《java24种设计模式.pdf》详细介绍了Java中的24种设计模式,适合不同水平的Java程序员学习。设计模式是软件工程中的一种重要知识,它们是针对软件设计中常见问题的一种可复用、通用的解决方案。设计模式不仅仅是...

    java设计模式java设计模式.pdf

    根据提供的信息,我们可以总结出以下关于Java设计模式的相关知识点: ### Java设计模式概览 Java设计模式是一套被广泛认可的、经过验证的解决方案,用于解决软件开发过程中遇到的常见问题。这些模式可以帮助开发者...

    Java设计模式经典搞笑珍藏版

    ### Java设计模式经典搞笑珍藏版 #### 一、引言 《Java设计模式经典搞笑珍藏版》这本书以一种轻松幽默的方式介绍了23种经典的设计模式及其在Java中的应用。设计模式是一种软件工程领域中非常重要的概念,它提供了...

    23种设计模式实现designpattern书籍代码的重写Java版

    本资源提供了《设计模式:可复用面向对象软件的基础》(GOF设计模式)书籍中23种设计模式的Java实现重写版本。下面将对这23种设计模式进行详细解释,并结合提供的文件名来推测每种模式的示例应用。 1. **单例模式...

    java的23种设计模式

    ### Java的23种设计模式详解 #### 一、引言 设计模式是软件工程领域的一个重要概念,它提供了一套解决常见问题的有效方案。在Java编程中,掌握设计模式对于提升代码质量和可维护性至关重要。本文将详细介绍23种经典...

    JAVA设计模式.rar

    门面模式【FACADE PATTERN】  适配器模式【ADAPTER PATTERN】  模板方法模式【TEMPLATE METHOD PATTERN】  建造者模式【BUILDER PATTERN】 桥梁模式【BRIDGE PATTERN】  命令模式【COMMAND PATTERN...

    24种java设计模式介绍与6大设计原则

    门面模式是一种结构型设计模式,为子系统中的一组接口提供一个一致的界面,门面模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 ##### 描述 门面模式的主要目的是简化复杂的系统,对外提供一个简单...

    JAVA常用设计模式详解大全.doc

    JAVA常用设计模式详解大全 在软件开发中,设计模式是指在软件设计中反复出现的问题解决方案,JAVA作为一门广泛应用的编程语言,设计模式在JAVA开发中扮演着重要角色。下面将对JAVA常用设计模式进行详细的介绍。 ...

Global site tag (gtag.js) - Google Analytics