建造者设计模式
建造者模式属于创建型模式。适用于对象的创建过程复杂多样,构造步骤需要交给用户去自定义的情况。更加注重创建过程的灵活性,常与链式编程一起使用。
对象:
/**
* 对象中有构造方法可能多种多样,建造出来的对象不尽相同时,
* 可以采用新增一个建造者来定义构造过程,并将构造步骤交给用户去自定义
*/
public class OneObject {
private String a;
private String b;
/**
* 构造方法多种多样:
* public OneObject(String a){//一个参数的逻辑}
* public OneObject(String a, String b){//两个参数的逻辑}
*/
public OneObject(){}
public String getA() { return a; }
public void setA(String a) { this.a = a; }
public String getB() { return b; }
public void setB(String b) { this.b = b; }
}
建造者:
/**
* 定义建造者接口
*/
public interface IBuilder {
OneObject build();
}
// 实现类
public class OneObjectBuilder implements IBuilder{
OneObject oneObject = new OneObject(); // 持有对象
public OneObjectBuilder addA(String a) {
// 给对象设置不同的参数时,可以做不同的逻辑处理
oneObject.setA(a);
return this;
}
public OneObjectBuilder addB(String b) {
// 给对象设置不同的参数时,可以做不同的逻辑处理
oneObject.setB(b);
return this;
}
@Override
public OneObject build() {
// 构造逻辑
oneObject.setA(oneObject.getA() + "$");
oneObject.setB(oneObject.getB() + "$");
return oneObject; // 返回最终建造好的对象
}
}
使用:
OneObjectBuilder oneObjectBuilder = new OneObjectBuilder();
oneObjectBuilder.addA("123").addB("234");
OneObject oneObject = oneObjectBuilder.build();