Builder模式
来源:互联网 发布:怎样降低淘宝纠纷率 编辑:程序博客网 时间:2024/06/14 18:00
Builder模式的UML图
类图
时序图
Builder模式的角色
Director :调用具体的Builder去构建对象
Builder : 抽象接口,规范产品对象的各个组成部分的构建
ConcreteBuilder : 实现builder类抽象接口,建造过程完成后,返回产品
Product : 建造的产品对象
Builder模式的优点
- 调用者无需知道构造细节
- 可以更精细的控制构建过程
- 将构建过程和部件解耦
- 使用不同的builder,相同的构建过程,能够产生不同的对象
一个Builder模式
Director
public class Director {private Builder builder;public Director(Builder b) {builder = b;}public void construct(){builder.buildFloor();builder.buildHousetop();builder.buildWall();}}Builder
public interface Builder {public void buildFloor();public void buildWall();public void buildHousetop();public House getResult();}ConcreateBuilder1
public class PingFangBuilder implements Builder {private House house = new House();@Overridepublic void buildFloor() {house.setFloor("平房->地板");}@Overridepublic void buildWall() {house.setWall("平房->墙");}@Overridepublic void buildHousetop() {house.setHousetop("平房->房顶");}@Overridepublic House getResult() {return house;}}ConcreteBuilder2
public class GongyuBuilder implements Builder {private House house = new House();@Overridepublic void buildFloor() {house.setFloor("公寓地板");}@Overridepublic void buildWall() {house.setWall("公寓墙");}@Overridepublic void buildHousetop() {house.setHousetop("公寓屋顶");}@Overridepublic House getResult() {return house;}}Product
public class House {private String floor;private String wall;private String housetop;public String getFloor() {return floor;}public void setFloor(String floor) {this.floor = floor;}public String getWall() {return wall;}public void setWall(String wall) {this.wall = wall;}public String getHousetop() {return housetop;}public void setHousetop(String housetop) {this.housetop = housetop;}}Client
public class MainClass {public static void main(String[] args) {Builder builder1 = new PingFangBuilder();Director director1 = new Director(builder1);director1.construct();House house1 = builder1.getResult();GongyuBuilder builder2 = new GongyuBuilder();Director director2 = new Director(builder2);director2.construct();House house2 = builder2.getResult();}}
0 0
- builder 模式
- Builder模式
- Builder 模式
- Builder模式
- builder模式
- builder模式
- Builder模式
- builder模式
- Builder模式
- Builder 模式
- Builder 模式
- Builder模式
- Builder模式
- builder模式
- builder模式
- builder模式
- Builder模式
- Builder模式
- 【搜索】【CQBZOJ 2468】终极大水题(反素数)
- Spring3+Hibernate+Struts2整合之注解整合
- websql
- AndroidAnnotations标签
- 四元数与旋转
- Builder模式
- HDU 2007 平方和与立方和
- oracle中给表和列起别名
- sessionStorage localStorage
- 最好用的Unity版本控制工具
- 职场菜鸟感悟
- django view.py error 'QuerySet' object has no attribute 'save' 解决方法
- Javascript - 数组 一维数组 二维数组
- 观察者模式