设计模式:建造者模式
发布于 2021-04-08 02:18
什么是建造者模式?
生成器模式(英文:Builder Pattern),他可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。
一句话归纳
讲一个复杂的对象构建和表示分离。
代码示例
public class Director {
private ComputerBuilder computerBuilder;
public void setComputerBuilder(ComputerBuilder computerBuilder) { this.computerBuilder = computerBuilder; }
public ComputerBuilder getComputerBuilder() { return this.computerBuilder; }
public void createComputer() {
this.computerBuilder.createComputer();;
this.computerBuilder.builderKeyboard();
this.computerBuilder.builderMouse();
}
}
class Computer {
private String mouse;
private String keyboard;
public void setKeyboard(String keyboard) { this.keyboard = keyboard; }
public void setMouse(String mouse) { this.mouse = mouse; }
}
abstract class ComputerBuilder {
protected Computer computer;
public Computer getComputer() { return this.computer; }
public void createComputer() { this.computer = new Computer(); }
public abstract void builderKeyboard();
public abstract void builderMouse();
}
class MacBookProBuilder extends ComputerBuilder {
public void builderKeyboard() { super.computer.setKeyboard("mac keyboard"); }
public void builderMouse() { super.computer.setMouse("mac mouse"); }
}
class WindowsBuilder extends ComputerBuilder {
public void builderKeyboard() { super.computer.setKeyboard("windows keyboard");}
public void builderMouse() { super.computer.setMouse("windows mouse");}
}
适用性
以下场景我建议你考虑使用:
对构造过程进行更精细的控制;
将构建和表示分离;
相同的方法,不同的执行顺序,会产生不同的结果;
局限性
以下场景我建议你谨慎使用:
生成器要有足够普遍,以便为各种具体的生成器构造产品。
建造者和工厂方法的区别
主要区别就是建造者模式着重于一步步构建一个复杂的对象,就像零件的装配一样,会有顺序,顺序不同也会不一样;而工厂着重于多个系列的产品对象,不关心顺序,创建零件是主要的职责。
写在最后
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材