设计模式-创建型-建造者模式(Builder)
2016-08-04 17:58
375 查看
定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示角色
产品(Product):需要创建的对象,一般比较复杂,有比较多的代码量抽象建造者(Builder):规范各个建造器的接口或抽象类
建造者(ConcreteBuilder):实现抽象建造者的具体建造者,它一般有两个任务:组装产品,返回产品
导演类(Director):负责调用适当的建造者来组建产品,它与产品无依赖关系,与之交互的是建造者类
优点
封装性好:一般产品类和建造者类是比较稳定的,将主要的业务逻辑封装在导演类中可使系统更加稳定容易扩展:如果有新的需求,只需要实现一个新的建造器即可,无需更改原有的代码
类图
package com.vapy.creator.Builder; /** * * @author vapy * */ public class Car { private String name; private String type; public void show(){ System.out.print("name : " + name); System.out.println("\ttype : " + type); } public void setName(String name) { this.name = name; } public void setType(String type) { this.type = type; } }
package com.vapy.creator.Builder; /** * * @author vapy * */ public abstract class Builder { public abstract void setPart(String arg1, String arg2); public abstract Car getCar(); }
package com.vapy.creator.Builder; /** * * @author vapy * */ public class ConcreteBuilder extends Builder { private Car car = new Car(); @Override public void setPart(String arg1, String arg2) { car.setName(arg1); car.setType(arg2); } @Override public Car getCar() { return car; } }
package com.vapy.creator.Builder; /** * * @author vapy * */ public class Director { private Builder builder = new ConcreteBuilder(); public Car getBMW(){ builder.setPart("宝马","X7"); return builder.getCar(); } public Car getAudi(){ builder.setPart("奥迪","Q5"); return builder.getCar(); } }
package com.vapy.creator.Builder; /** * * @author vapy * */ public class Client { public static void main(String[] args) { Director director = new Director(); Car bmw = director.getBMW(); bmw.show(); Car audi = director.getAudi(); audi.show(); } }
总结
建造者模式和工厂模式极为相似,不过,工厂模式是将对象的全部创建过程封闭在工厂类中,由工厂类提供最终的产品,而建造者类只提供产品类各个组件的建造,而具体的建造过程却是由导演类完成的如果产品的建造比较复杂,可以使用工厂模式;如果产品各个组件的建造也很复杂,推荐使用建造者模式
本文代码可在github查看:点击此处
相关文章推荐
- 设计模式---建造者模式Builder(创建型)
- 设计模式(三)建造者模式Builder(创建型)
- 设计模式(2)-创建型-建造者模式(Builder)
- C#设计模式之四建造者模式(Builder Pattern)【创建型】
- 六.创建型设计模式——Builder Pattern(建造者模式)
- 23种设计模式(4)_创建型_建造者模式(Builder Pattern)
- 设计模式(2)-创建型-建造者模式(Builder)
- C#设计模式之四建造者模式(Builder Pattern)【创建型】
- 【设计模式】创建型模式——建造者模式(Builder Pattern)
- 设计模式——创建型之使用建造者模式(Builder Pattern)灵活自由创建你的对象(一)
- Java经典设计模式-创建型模式-建造者模式(Builder)
- 设计模式(三)建造者模式Builder(创建型)
- 设计模式(三)建造者模式Builder(创建型)
- 设计模式(三)建造者模式Builder(创建型)
- 设计模式(三)建造者模式Builder(创建型)
- 设计模式-创建型模式#建造者模式Builder
- 设计模式之------创建型模式(四)-----建造者模式(Builder)
- 【设计模式学习笔记六】【创建型模式】【建造者模式(Builder)】
- 设计模式学习之建造者模式(Builder,创建型模式)(6)
- 设计模式(2)-创建型-建造者模式(Builder)