而适配器模式可以修饰不同接口的对象

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

火龙果整理 uml.org.cn
建造者模式制造超人 - 1
火龙果整理 uml.org.cn
-6-
建造者模式制造超人 - 2
public class SuperMan { public abstract class Builder { // 超人的身体 protected final SuperMan superMan public class AdultSuperManBuilder extends Builder { private String body; = new SuperMan(); @Override // 超人的特殊能力 // 获得创建好的超人 public void setBody() { public class Director { private String specialTalent; public SuperMan getSuperMan() { superMan.setBody(" 强壮的身体 "); private Builder builder; // 超人的标志 return superMan; public class Client { } public SuperMan buildSuperMan(String name) { private String specialSymbol; } { public static void main(String args[]) @Override { // 建造身体 // get 、setDirector 方法if (name.equals("child")) director = new Director(); public void setSpecialTalent() { class ChildSuperManBuilder extends Builder { builder = new ChildSuperManBuilder(); ...... publicSuperMan public abstract void setBody(); adultSuperMan = director.buildSuperMan("adult"); @Override superMan.setSpecialTalent(" 可以飞行 "); } else if (name.equals("adult")) { @Override // 建造能力 System.out.println(" 成年超人 :" + adultSuperMan); public void setBody() { } String toString() builder = new AdultSuperManBuilder(); public { public abstract void setSpecialTalent(); SuperMan childSuperMan = director.buildSuperMan("child"); superMan.setBody(" 灵敏的身体"); @Override } else { + "," return this.getBody() // 建造标志 System.out.println(" } public void setSpecialSymbol() { :" + childSuperMan); return null; 小超人 + this.getSpecialTalent() + "," public abstract void setSpecialSymbol(); } @Override superMan.setSpecialSymbol(" 胸前带 S标记"); } + this.getSpecialSymbol(); } } public void setSpecialTalent() { } builder.setBody(); } superMan.setSpecialTalent("快速运动"); } builder.setSpecialTalent(); } } builder.setSpecialSymbol(); @Override return builder.getSuperMan(); public void setSpecialSymbol() { } superMan.setSpecialSymbol("胸前带小S标记"); } } } -7-
火龙果整理 uml.org.cn
建造者模式注重的是部件构建的过程,旨在通过一步
一步的精确构造创建出一个复杂的对象。 抽象工厂模式实现对产品家族的创建,抽象工厂模式
不关心构建过程,只关心什么产品由什么工厂生产即
可。
-3-
工厂方法模式制造超人 - 1
火龙果整理 uml.orwenku.baidu.com.cn
-4-
工厂方法模式制造超人 - 2
public interface ISuperMan { public interface SuperManFactory { // 超人的特殊能力 // 生产超人 public void specicalTalent(); public ISuperMan createSuperMan(); } } public class Client { public static void main(String args[]) { public class AdultSuperMan System.out.println("========创建一个成年超人 ========"); public class AdultSuperManFactory implements ISuperMan { SuperManFactory superManFactory = new AdultSuperManFactory(); implements SuperManFactory{ // 实现特殊能力 ISuperMan superMan = superManFactory.createSuperMan(); // 制造成年超人 public void specicalTalent() { superMan.specicalTalent(); public ISuperMan createSuperMan() { System.out.println System.out.println("========创建一个未成年超人 ========"); return new AdultSuperMan(); ("成年超人力大无穷、可以飞行!"); superManFactory = new ChildSuperManFactory(); } } superMan = superManFactory.createSuperMan(); } } superMan.specicalTalent(); public class ChildSuperMan } public class ChildSuperManFactory } implements ISuperMan { implements SuperManFactory{ // 实现特殊能力 // 制造成年超人 public void specicalTalent() { public ISuperMan createSuperMan() { System.out.println return new ChildSuperMan(); ("小超人可以快速运动"); } } } } -5-
火龙果整理 uml.org.cn
第 8 章
设计模式对比
本章目标
理解工厂方法模式、建造者模式和抽象工厂模式之间的相
火龙果整理 uml.org.cn
同点及区别
理解代理模式、装饰模式和适配器模式之间的区别 理解命令模式和策略模式之间的区别
-2-
创建型模式对比
• 工厂方法模式、抽象工厂模式和建造者模式具有较多的 相似性,它们之间的区别如下: 工厂方法模式注重的是整体对象的创建方法;
相关文档
最新文档