java设计模式--[结构模式]--门面模式[decorator pattern]
?一. 面模式
???? 面模式,又叫外模式,一大的系由若干子系成,每子系中包含多,些同合作用提供所需要的功能,若直接和子行交互,就形成了依,面模式就是用解此的一成熟模式.
?
二. 面模式的UML如下所示:
????? ![java设计形式-[结构模式]-门面模式[decorator pattern]](http://img.reader8.net/uploadfile/jiaocheng/20140186/2900/2014012900005834484.jpg)
?
三. 在用一局的物流系模面模式的,完整示例代如下:
?
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]](http://img.reader8.net/uploadfile/jiaocheng/20140186/2900/2014012900005834485.jpg)