设计模式--建造者模式

来源:互联网 发布:七政四余择日软件 编辑:程序博客网 时间: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
原创粉丝点击