国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

商城網(wǎng)站制作方案100個免費推廣網(wǎng)站

商城網(wǎng)站制作方案,100個免費推廣網(wǎng)站,個人網(wǎng)站開發(fā)要多久,Wordpress文章和tag標簽鏈接:C 設計模式 鏈接:C 設計模式 - 工廠方法 鏈接:C 設計模式 - 抽象工廠 鏈接:C 設計模式 - 原型模式 建造者模式(Builder Pattern)是一種創(chuàng)建型設計模式,它允許你分步驟創(chuàng)建復雜對象。與其他…

鏈接:C++ 設計模式
鏈接:C++ 設計模式 - 工廠方法
鏈接:C++ 設計模式 - 抽象工廠
鏈接:C++ 設計模式 - 原型模式

建造者模式(Builder Pattern)是一種創(chuàng)建型設計模式,它允許你分步驟創(chuàng)建復雜對象。與其他創(chuàng)建型模式不同,建造者模式不僅關注對象的創(chuàng)建,還關注對象的組裝過程。

1.問題分析

在軟件開發(fā)中,有時我們需要創(chuàng)建一個復雜對象,這個對象由多個部分組成,并且這些部分的構建過程可能非常復雜。直接使用構造函數(shù)來創(chuàng)建這樣的對象會導致代碼難以維護和擴展。建造者模式通過將對象的構建過程與表示分離,使得同樣的構建過程可以創(chuàng)建不同的表示。

2.實現(xiàn)步驟

  1. 定義產(chǎn)品類:定義一個復雜對象類,該類包含多個部分。
  2. 定義建造者接口:定義一個包含構建各個部分方法的接口。
  3. 實現(xiàn)具體建造者類:實現(xiàn)建造者接口,提供構建各個部分的具體實現(xiàn)。
  4. 定義指揮者類:定義一個指揮者類,用于控制建造過程。
  5. 客戶端代碼:使用指揮者類和具體建造者類來創(chuàng)建復雜對象。

3.代碼示例

3.1.定義產(chǎn)品類

// 機器人類
class Robot {public:void setHead(const std::string& head) { head_ = head; }void setBody(const std::string& body) { body_ = body; }void setArms(const std::string& arms) { arms_ = arms; }void setLegs(const std::string& legs) { legs_ = legs; }void show() const { std::cout << "Robot Parts: " << head_ << ", " << body_ << ", " << arms_ << ", " << legs_ << std::endl; }private:std::string head_;std::string body_;std::string arms_;std::string legs_;
};

3.2.定義建造者接口

// 建造者接口
class RobotBuilder {public:virtual ~RobotBuilder() = default;virtual void buildHead() = 0;virtual void buildBody() = 0;virtual void buildArms() = 0;virtual void buildLegs() = 0;virtual std::unique_ptr<Robot> getResult() = 0;protected:std::unique_ptr<Robot> robot_ = std::make_unique<Robot>();
};

3.3.實現(xiàn)具體建造者類

// 清潔機器人建造者類
class CleaningRobotBuilder : public RobotBuilder {public:void buildHead() override { robot_->setHead("Cleaning Head"); }void buildBody() override { robot_->setBody("Cleaning Body"); }void buildArms() override { robot_->setArms("Cleaning Arms"); }void buildLegs() override { robot_->setLegs("Cleaning Legs"); }std::unique_ptr<Robot> getResult() override { return std::move(robot_); }
};
// 巡檢機器人建造者類
class InspectionRobotBuilder : public RobotBuilder {public:void buildHead() override { robot_->setHead("Inspection Head"); }void buildBody() override { robot_->setBody("Inspection Body"); }void buildArms() override { robot_->setArms("Inspection Arms"); }void buildLegs() override { robot_->setLegs("Inspection Legs"); }std::unique_ptr<Robot> getResult() override { return std::move(robot_); }
};

3.4.定義指揮者類

// 指揮者類
class RobotDirector {public:void setBuilder(RobotBuilder* builder) { builder_ = builder; }std::unique_ptr<Robot> construct() {builder_->buildHead();builder_->buildBody();builder_->buildArms();builder_->buildLegs();return builder_->getResult();}private:RobotBuilder* builder_;
};

3.5.客戶端代碼

int main() {// 創(chuàng)建具體建造者對象CleaningRobotBuilder cleaningBuilder;InspectionRobotBuilder inspectionBuilder;// 創(chuàng)建指揮者對象并設置建造者RobotDirector director;// 構建清潔機器人director.setBuilder(&cleaningBuilder);std::unique_ptr<Robot> cleaningRobot = director.construct();cleaningRobot->show();// 構建巡檢機器人director.setBuilder(&inspectionBuilder);std::unique_ptr<Robot> inspectionRobot = director.construct();inspectionRobot->show();return 0;
}

4.總結

  • 建造者模式(Builder Pattern)

    1. 創(chuàng)建過程:指揮者控制對象的創(chuàng)建過程,按特定順序構建對象。
    2. 目的:將復雜對象的構建過程與其表示分離。
    3. 適用場景:
      • 需要逐步構建復雜對象,并且構建過程可以有不同的表示。
      • 對象由多個部分組成,每個部分可以獨立構建。
      • 需要控制對象的創(chuàng)建過程。
  • 工廠模式(Factory Pattern)

    1. 創(chuàng)建過程:工廠決定創(chuàng)建哪個具體對象,創(chuàng)建過程較為簡單。
    2. 目的:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。
    3. 適用場景:
      • 需要創(chuàng)建的對象類型在運行時才確定。
      • 需要將對象的創(chuàng)建與使用分離。
      • 對象通常是一個整體,創(chuàng)建時不需要逐步構建。
http://aloenet.com.cn/news/40022.html

相關文章:

  • 網(wǎng)站建設 天津國內(nèi)軍事新聞最新消息
  • 能免費做網(wǎng)站嗎信息流廣告模板
  • 成都定制企業(yè)網(wǎng)站制作免費學生網(wǎng)頁制作成品代碼
  • 專業(yè)手機網(wǎng)站制作公司網(wǎng)站快速排名服務商
  • 做網(wǎng)站開發(fā)人員架構市場營銷
  • win7如何做網(wǎng)站建立自己的網(wǎng)站平臺
  • 鋼管網(wǎng)站模板國外搜索引擎大全不屏蔽
  • 學做川菜的網(wǎng)站站長工具whois查詢
  • 山西電力建設三公司網(wǎng)站免費的行情網(wǎng)站app
  • 網(wǎng)站建設 公司 常見問題seo綜合查詢是什么
  • 湘潭網(wǎng)站建站公司武漢seo結算
  • 淄博的大型網(wǎng)站建設怎樣做網(wǎng)站
  • 網(wǎng)站建設費用能否計入開辦費百度論壇發(fā)帖
  • 新鄉(xiāng)市建設工程信息網(wǎng)seo工作內(nèi)容有哪些
  • 深圳網(wǎng)站制作工作室百度推廣介紹
  • 工業(yè)設計相關網(wǎng)站公司官網(wǎng)搭建
  • 站長網(wǎng)站的優(yōu)勢百度網(wǎng)絡營銷中心
  • 西安做網(wǎng)站電話百度一下你就知道網(wǎng)頁
  • 佛山新網(wǎng)站制作平臺鄭州seo優(yōu)化公司
  • 門戶網(wǎng)站解決方案蘇州seo建站
  • 臨淄網(wǎng)站建設公司網(wǎng)站推廣搜索
  • 麗江網(wǎng)站建設怎么自己創(chuàng)建一個網(wǎng)站
  • ppt做視頻 模板下載網(wǎng)站營銷方式和渠道
  • 重慶網(wǎng)站建設合肥公司網(wǎng)站怎么宣傳
  • 做界面網(wǎng)站用什么語言seo教程
  • 青海住房與建設廳網(wǎng)站廣東網(wǎng)約車漲價
  • 用dw做淘客網(wǎng)站的步驟南京百度推廣開戶
  • 工控做網(wǎng)站網(wǎng)站免費軟件
  • 做企業(yè)網(wǎng)站注意些啥百度指數(shù)數(shù)據(jù)分析平臺官網(wǎng)
  • 專門做圖片的網(wǎng)站有哪些今日軍事新聞