设计模式--建造者模式
来源:互联网 发布:七政四余择日软件 编辑:程序博客网 时间:2024/06/10 01:19
建造者模式的本质:
分离了对象子组件的单独构造(由Builder类负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。
由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。
建造者模式实现
public class Cellphone {private Cpu cpu;//CPUprivate OperateSystem os;//操作系统private Memory memory;//内存public Cpu getCpu() {return cpu;}public void setCpu(Cpu cpu) {this.cpu = cpu;}public OperateSystem getOs() {return os;}public void setOs(OperateSystem os) {this.os = os;}public Memory getMemory() {return memory;}public void setMemory(Memory memory) {this.memory = memory;}}/** * CPU */class Cpu {private String name;public Cpu(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}/** * 操作系统 */class OperateSystem {private String name;public OperateSystem(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}/** * 内存 */class Memory {private String name;public Memory(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}/** *构建者接口 */public interface CellphoneBuilder {Cpu builderCpu();OperateSystem builderOperateSystem();Memory builderMemory();}public class IPhoneBuilder implements CellphoneBuilder{public Cpu builderCpu() {System.out.println("构建苹果的CPU: A8+M8");return new Cpu("A8+M8");}public Memory builderMemory() {System.out.println("构建苹果的内存:三星1GB内存");return new Memory("三星1GB内存");}public OperateSystem builderOperateSystem() {System.out.println("构建苹果的操作系统:IOS 8.0");return new OperateSystem("IOS 8.0");}}/** *装配接口 */public interface CellphoneDirector {/** * 组装手机对象 */Cellphone directCellphone();}/** *装配接口 */public class IPhoneDirector implements CellphoneDirector {private CellphoneBuilder builder;public IPhoneDirector(CellphoneBuilder builder) {this.builder = builder;}/** * 组装手机对象 */public Cellphone directCellphone(){Cpu cpu = builder.builderCpu();Memory m = builder.builderMemory();OperateSystem os = builder.builderOperateSystem();Cellphone phone = new Cellphone();phone.setCpu(cpu);phone.setMemory(m);phone.setOs(os);return phone;}}public class Client {public static void main(String[] args) {CellphoneDirector director = new IPhoneDirector(new IPhoneBuilder());Cellphone iphone = director.directCellphone();System.out.println(iphone.getOs().getName());}}
0 0
- 设计模式-------建造者
- 设计模式-建造者
- 建造者设计模式
- 建造者设计模式
- 建造者设计模式
- 设计模式-建造者
- 建造者设计模式
- 建造者设计模式
- 建造者设计模式
- [设计]建造者模式
- 设计模式:建造者模式
- 设计模式---建造者模式
- 设计模式---建造者模式
- 设计模式-----建造者模式
- 设计模式-【建造者模式】
- 设计模式--建造者模式
- 设计模式建造者模式
- 设计模式- 建造者模式
- ISBN码
- Ubuntu14.04安装Sublime text2及Package Control插件
- Linux查看系统信息的一些命令及查看已安装软件包的命令(转)
- CF_469C_24Game
- Android Studio操作/问题积累
- 设计模式--建造者模式
- Streaming测试用例(改)--54
- CSS的学习笔记---(二)
- OC_NSDate
- JDK环境变量配置
- 不应该害怕的事
- 黑马程序员——ios学习笔记 OC 继承
- CityEngine用到的一些英文单词(2)
- ViewPager+GridView显示popupwindow