设计模式:建造者模式

发布于 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 {    @Override    public void builderKeyboard() { super.computer.setKeyboard("mac keyboard"); }    @Override    public void builderMouse() { super.computer.setMouse("mac mouse"); }}class WindowsBuilder extends ComputerBuilder {    @Override    public void builderKeyboard() { super.computer.setKeyboard("windows keyboard");}    @Override    public void builderMouse() { super.computer.setMouse("windows mouse");}}

适用性

以下场景我建议你考虑使用:

  • 对构造过程进行更精细的控制;

  • 将构建和表示分离;

  • 相同的方法,不同的执行顺序,会产生不同的结果;

局限性

以下场景我建议你谨慎使用:

  • 生成器要有足够普遍,以便为各种具体的生成器构造产品。

建造者和工厂方法的区别

主要区别就是建造者模式着重于一步步构建一个复杂的对象,就像零件的装配一样,会有顺序,顺序不同也会不一样;而工厂着重于多个系列的产品对象,不关心顺序,创建零件是主要的职责。


写在最后

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材