当前位置: 首页> 教育> 幼教 > 国际阿里巴巴官网首页_建站步骤图_手机优化软件排行_优化课程

国际阿里巴巴官网首页_建站步骤图_手机优化软件排行_优化课程

时间:2025/8/27 11:23:12来源:https://blog.csdn.net/qq_43287763/article/details/143043384 浏览次数:0次
国际阿里巴巴官网首页_建站步骤图_手机优化软件排行_优化课程

现实世界的例子

        想象一下,你在哈迪餐厅(Hardee's)点了一份特定的套餐,比如“大哈迪”(Big Hardee),他们二话不说就把套餐递给了你,这就是简单工厂模式的例子。但也有一些情况下,创建逻辑可能涉及更多步骤。例如,你想要一份定制的赛百味(Subway)套餐,你有多种选择来决定你的三明治怎么做,比如你想要什么面包?你想要什么酱料?你想要什么奶酪?等等。在这种情况下,建造者模式就能派上用场。

用简单的话来说

        建造者模式允许你创建具有不同特征的对象,同时避免构造器污染。当你可能有对象的多种特征时,或者当对象的创建涉及多个步骤时,这个模式非常有用。

维基百科的说法

        建造者模式是一种对象创建的软件设计模式,旨在解决构造器重载过多(也称为“构造器参数过多”或“构造器链”)的反模式问题。

说到这里,我补充一下关于构造器重载过多反模式的内容。构造器重载过多反模式-CSDN博客

程序示例

        一个合理的替代方案是使用建造者模式。首先,我们有一个想要制作的汉堡类:

#include <iostream>
#include <string>class Burger {
private:std::string bun;std::string patty;std::string sauce;// 声明 BurgerBuilder 为友元类friend class BurgerBuilder;public:Burger() : bun("default"), patty("default"), sauce("default") {}void showBurger() const {std::cout << "Bun: " << bun << ", Patty: " << patty << ", Sauce: " << sauce << std::endl;}
};

        然后我们有建造者类:

class BurgerBuilder {
private:Burger burger;public:// 设置汉堡的各个部分,返回当前对象的引用BurgerBuilder& setBun(const std::string& bunType) {burger.bun = bunType;return *this;}BurgerBuilder& setPatty(const std::string& pattyType) {burger.patty = pattyType;return *this;}BurgerBuilder& setSauce(const std::string& sauceType) {burger.sauce = sauceType;return *this;}// 返回构建好的汉堡对象Burger build() const {return burger;}
};

        然后可以这样使用:

int main() {BurgerBuilder builder;Burger myBurger = builder.setBun("Sesame").setPatty("Beef").setSauce("BBQ").build();myBurger.showBurger();return 0;
}

何时使用?

        当可能有对象的多种特征时,并且为了避免构造器重载过多,应该使用建造者模式。与工厂模式的主要区别在于:工厂模式用于创建过程是一次性的情况,而建造者模式用于创建过程是多步骤的情况。

关键字:国际阿里巴巴官网首页_建站步骤图_手机优化软件排行_优化课程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: