小工具知识网

当前位置: 首页 > 行业知识 > 【设计模式 04】建造者模式

行业知识

【设计模式 04】建造者模式

2026-11-15 19:06:31 来源:互联网转载

如���要构建的对象很复杂,那么可以将整个构建过程拆分成多个步骤,并为每一个步骤定义一个抽象的接口。并添加一个指导者用来控制构建产品的顺序和步骤。

Java实现: 

// 产品类class Product {    private String part1;    private String part2;    public void setPart1(String part1) {        this.part1 = part1;    }    public void setPar2(String part2) {        this.part2 = part2;    }    // 其他属性和方法}// 抽象建造者接口interface Builder {    void buildPart1(String part1);    void buildPart2(String part2);    Product getResult();}// 具体建造者类class ConcreteBuilder implements Builder {    private Product product = new Product();    @Override    public void buildPart1(String part1) {        product.setPart1(part1);    }    @Override    public void buildPart2(String part2) {        product.setPart2(part2);    }    @Override    public Product getResult() {        return product;    }}// 指导者类class Director {    private Builder builder;    public Director(Builder builder) {        this.builder = builder;    }    // 调用方法构建产品    public void construct() {        builder.buildPart1("Part 1");        builder.buildPart2("Part 2");    }}public class Main {    public static void main(String[] args) {        // 创建指导者和建造者对象        Builder builder = new ConcreteBuilder();        Director director = new Director(builder);        // 指导者构建产品        director.construct();        // 获取构建好的产品        Product product = builder.getResult();        // 输出产品信息        System.out.println(product);    }}

 【设计模式专题之建造者模式】4. 自行车加工

CPP版题解:

#include #include using namespace std;class Bike {public:    string frame;    string tires;        void setFrame(const string& frame) {        this->frame = frame;    }        void setTires(const string& tires) {        this->tires = tires;    }    friend ostream& operator  bikeType;                BikeBuilder* builder;                if (bikeType == "mountain") {            builder = new MountainBikeBuilder();        } else {            builder = new RoadBikeBuilder();        }                Bike bike = director.construct(*builder);        cout 

上一篇:腾讯服务器哪里找代理?

下一篇:轻松下载SAI画图软件,详细指南助你轻松操作!