设计模式 创建者模式 -- 建造者模式
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 创建者模式 -- 建造者模式相关的知识,希望对你有一定的参考价值。
1. 建造者模式
1.1 引入
1.2 定义
1.3 结构
1.3.1 典型的复杂对象类代码
1.3.2 典型的抽象建造者类代码
1.3.3 典型的具体建造者类代码
1.3.4 典型的指挥者类代码
1.4 实例: 创建共享单车
创建共享单车:
1.4.1 Bike 自行车类
package com.tian.pattern.builder.demo1;
/**
* 自行车类
*/
public class Bike {
private String frame;//车架
private String seat;//车座
public String getFrame() {
return frame;
}
public void setFrame(String frame) {
this.frame = frame;
}
public String getSeat() {
return seat;
}
public void setSeat(String seat) {
this.seat = seat;
}
}
1.4.2 Builder 构造者类
package com.tian.pattern.builder.demo1;
/**
* 构造者
*/
public abstract class Builder {
//声明Bike类型的变量,并进行赋值
protected Bike bike = new Bike();
public abstract void buildFrame();
public abstract void buildSeat();
//构建自行车的方法
public abstract Bike createBike();
}
1.4.3 MobileBuilder 摩拜单车构造者类
package com.tian.pattern.builder.demo1;
/**
* 具体的构建者,用来构建摩拜单车对象
*/
public class MobileBuilder extends Builder {
public void buildFrame() {
bike.setFrame("碳纤维车架");
}
public void buildSeat() {
bike.setSeat("真皮车座");
}
public Bike createBike() {
return bike;
}
}
1.4.4 OfoBuilder ofo单车构造者类
package com.tian.pattern.builder.demo1;
/**
* ofo单车构建者,用来构建ofo单车
*/
public class OfoBuilder extends Builder {
public void buildFrame() {
bike.setFrame("铝合金车架");
}
public void buildSeat() {
bike.setSeat("橡胶车座");
}
public Bike createBike() {
return bike;
}
}
1.4.5 Director 指挥者类
package com.tian.pattern.builder.demo1;
/**
* 指挥者类
*/
public class Director {
//声明builder类型的变量
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
//组装自行车的功能
public Bike construct() {
builder.buildFrame();
builder.buildSeat();
return builder.createBike();
}
}
1.4.6 Client 客户端类(测试类)
package com.tian.pattern.builder.demo1;
/**
* 客户端类(测试类)
*/
public class Client {
public static void main(String[] args) {
//创建指挥者对象
Director director = new Director(new MobileBuilder());
//让指挥者只会组装自行车
Bike bike = director.construct();
System.out.println(bike.getFrame());
System.out.println(bike.getSeat());
}
}
1.4.7 运行结果
1.5 可以简化系统结构,可以把指挥者类和抽象建造者进行结合
上面示例是 Builder模式的常规用法,指挥者类 Director在建造者模式中具有很重要的作用,它用于指导具体构建者如何构建产品,控制调用先后次序,并向调用者返回完整的产品类,但是有些情况下需要简化系统结构,可以把指挥者类和抽象建造者进行结合(把指挥者类的功能集成到抽象建造者类,然后删去指挥者类)
说明:
1.6 模式优缺点分析
1.6.1 优点
1.6.2 缺点
1.7 模式适用环境
以上是关于设计模式 创建者模式 -- 建造者模式的主要内容,如果未能解决你的问题,请参考以下文章
设计模式从青铜到王者第八篇:创建型模式之建造者模式(BuilderPattern)