网络管理员需要懂网站建设吗,seo做的比较牛的公司,关于幼儿建设网站ppt模板下载,外贸企业网页制作一、建造者模式
1、原理 建造者模式又叫生成器模式#xff0c;是一种对象的构建模式。它可以将复杂对象的建造过程抽象出来#xff0c;使这个抽象过程的不同实现方法可以构造出不同表现#xff08;属性#xff09;的对象。创建者模式是一步一步创建一个复杂的对象#xf…一、建造者模式
1、原理 建造者模式又叫生成器模式是一种对象的构建模式。它可以将复杂对象的建造过程抽象出来使这个抽象过程的不同实现方法可以构造出不同表现属性的对象。创建者模式是一步一步创建一个复杂的对象它允许用户只通过指定复杂对象的类型和内容就可以构建它们用户不需要知道内部的具体构建细节。 2、核心角色 建造者模式的四个核心角色 Product产品角色一个具体的产品对象Builder抽象建造者创建一个Product对象的各个部件指定的接口ConcreteBuilder具体建造者实现接口构建创建对象和装配初始化对象各个部件Director指挥者构建一个使用Builder接口的对象。它主要有两个作用一是隔离了客户与对象的生产过程二是负责控制产品对象的生成过程
3、UML类图 使用建造者模式创建一个盖房子的程序UML类图如下 代码实现 #include iostream
using namespace std;// 产品
class House {
public:string m_base; // 地基string m_wall; // 墙string m_roof; // 屋顶
};// 抽象的建造者
class IHouseBuilder {
public:virtual void BuildBase();virtual void BuildWall();virtual void BuildRoof();virtual House* Build();
};// 具体的建造者创建普通房子
class CommonHouseBuilder : public IHouseBuilder
{
public:void BuildBase() override {cout 普通房打地基 endl;}void BuildWall() override {cout 普通房建墙 endl;}void BuildRoof() override {cout 普通房建房顶 endl;}House* Build() {return new House;}
};// 具体的建造者创建高楼
class HighHouseBuilder : public IHouseBuilder
{
public:void BuildBase() override {cout 高楼打地基 endl;}void BuildWall() override {cout 高楼建墙 endl;}void BuildRoof() override {cout 高楼建房顶 endl;}House* Build() override {return new House;}
};// 指挥官
class Director {
public:void SetBuilder(IHouseBuilder *pBuilder) {m_pBuilder pBuilder;}// 创建产品House* Construct() {m_pBuilder-BuildBase();m_pBuilder-BuildWall();m_pBuilder-BuildRoof();return m_pBuilder-Build();}private:IHouseBuilder* m_pBuilder;
};int main()
{// 创建盖房子的指挥官Director *pDirector new Director;// 具体的建造者IHouseBuilder *pCommonHouseBuilder new CommonHouseBuilder;IHouseBuilder *pHighHouseBuilder new HighHouseBuilder;// 盖普通房子pDirector-SetBuilder(pCommonHouseBuilder);House *pCommonHouse pDirector-Construct();// 盖高楼pDirector-SetBuilder(pHighHouseBuilder);House *pHighHouse pDirector-Construct();return 0;
}
4、应用场景 建造者模式唯一区别于工厂模式的是针对复杂对象的创建。也就是说如果创建简单对象通常都是使用工厂模式进行创建而如果创建复杂对象就可以考虑使用建造者模式。 当需要创建的产品具备复杂创建过程时可以抽取出共性创建过程然后交由具体实现类自定义创建流程使得同样的创建行为可以生产出不同的产品使创建产品的灵活性大大增加。 建造者模式主要适用于以下应用场景 相同的方法不同的执行顺序产生不同的结果多个部件或零件都可以装配到一个对象中但是产生的结果又不相同初始化一个对象特别复杂参数多而且很多参数都具有默认值
5、建造者模式和工厂模式的区别 建造者模式和工厂模式主要有下面这些区别 建造者模式更加注重方法的调用顺序工厂模式注重创建对象创建对象的力度不同建造者模式创建复杂的对象由各种复杂的部件组成工厂模式创建出来的对象都一样关注重点不一样工厂模式只需要把对象创建出来就可以了而建造者模式不仅要创建出对象还要知道对象由哪些部件组成建造者模式根据建造过程中的顺序不一样最终对象部件组成也不一样