青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

emptysoul

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  25 Posts :: 0 Stories :: 23 Comments :: 0 Trackbacks

常用鏈接

留言簿(18)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

構建器模式(Builder)的目標是將對象的創建與它的表示法分開,意味著創建過程保持原狀,但產生對象的表示法可能不同,它通常用來創建復雜的對象,這個對象是由多個組件組成的。
對于銷售組裝電腦的銷售商來說,他們要銷售電腦,而電腦通常由CPU、主板及硬盤等部件組成,這時,電腦的組成就可以由Builder模式來解決。

UML圖如下:


代碼如下:
//ComputerPart.h
#include <string>

class ComputerPart  
{
public:
    ComputerPart();
    ComputerPart(std::
string);
    
virtual ~ComputerPart();

    friend std::ostream
& operator<<(std::ostream& os, ComputerPart& part);
private:
    std::
string m_strPart;
};

//ComputerPart.cpp
#include "stdafx.h"
#include 
"ComputerPart.h"
#include 
<iostream>

using namespace std;

ComputerPart::ComputerPart()
{

}

ComputerPart::ComputerPart(
string part)
{
    m_strPart 
= part;
}

ComputerPart::
~ComputerPart()
{

}

std::ostream
& operator<<(std::ostream& os, ComputerPart& part)
{
    
return os << part.m_strPart << " ";
}

//DesktopProduct.h
#include <vector>

class ComputerPart;
class DesktopProduct  
{
public:
    DesktopProduct();
    
virtual ~DesktopProduct();

    
void AddPart(ComputerPart*);
    friend std::ostream
& operator<<(std::ostream& os, DesktopProduct& computer);
private:
    std::vector
<ComputerPart*> m_vParts;
};

//DesktopProduct.cpp
#include "stdafx.h"
#include 
"DesktopProduct.h"
#include 
"ComputerPart.h"
#include 
<iostream>
#include 
<typeinfo>

using namespace std;

DesktopProduct::DesktopProduct()
{

}

DesktopProduct::
~DesktopProduct()
{
    
}

void DesktopProduct::AddPart(ComputerPart* pPart)
{
    m_vParts.push_back(pPart);
}

ostream
& operator<<(ostream& os, DesktopProduct& computer)
{
    vector
<ComputerPart*>::iterator it;
    
for(it = computer.m_vParts.begin(); it != computer.m_vParts.end(); ++it)
    {
        os 
<< **it;
    }

    
return os;
}

//Builder.h
class DesktopProduct;
class Builder  
{
public:
    Builder();
    
virtual ~Builder();

    
virtual void BuilderCPU() = 0;
    
virtual void BuilderMainboard() = 0;
    
virtual void BuilderHarddisk() = 0;

    
void CreateComputer();
    DesktopProduct
* GetComputer();
protected:
    DesktopProduct
* m_pComputer;
};

//Builder.cpp
#include "stdafx.h"
#include 
"Builder.h"
#include 
"DesktopProduct.h"

Builder::Builder()
{
    m_pComputer 
= 0;
}

Builder::
~Builder()
{

}

void Builder::CreateComputer()
{
    m_pComputer 
= new DesktopProduct;
}

DesktopProduct
* Builder::GetComputer()
{
    
return m_pComputer;
}

//DesktopBuilder.h
#include "Builder.h"

class DesktopBuilder : public Builder 
{
public:
    DesktopBuilder();
    
virtual ~DesktopBuilder();

    
void BuilderCPU();
    
void BuilderMainboard();
    
void BuilderHarddisk();
};

//DesktopBuilder.cpp
#include "stdafx.h"
#include 
"DesktopBuilder.h"
#include 
"DesktopProduct.h"
#include 
"ComputerPart.h"
#include 
<string>

using namespace std;

DesktopBuilder::DesktopBuilder()
{

}

DesktopBuilder::
~DesktopBuilder()
{

}

void DesktopBuilder::BuilderCPU()
{
    m_pComputer
->AddPart(new ComputerPart("CPU"));
}

void DesktopBuilder::BuilderHarddisk()
{
    m_pComputer
->AddPart(new ComputerPart("硬盤"));
}

void DesktopBuilder::BuilderMainboard()
{
    m_pComputer
->AddPart(new ComputerPart("主板"));
}

//Seller.h
class Builder;
class Seller  
{
public:
    Seller();
    
virtual ~Seller();
    
    
void SetBuilder(Builder*);
    
void Construct();
private:
    Builder
* m_pBuilder;
};

//Seller.cpp
#include "stdafx.h"
#include 
"Seller.h"
#include 
"Builder.h"

Seller::Seller()
{
    m_pBuilder 
= 0;
}

Seller::
~Seller()
{

}

void Seller::SetBuilder(Builder* pBuilder)
{
    m_pBuilder 
= pBuilder;
}

void Seller::Construct()
{
    m_pBuilder
->CreateComputer();
    m_pBuilder
->BuilderCPU();
    m_pBuilder
->BuilderHarddisk();
    m_pBuilder
->BuilderMainboard();
}

//main.cpp
#include "stdafx.h"
#include 
"Builder.h"
#include 
"DesktopBuilder.h"
#include 
"Seller.h"
#include 
"DesktopProduct.h"
#include 
<iostream>

using namespace std;

int main(int argc, char* argv[])
{
    Builder
* pBuilder = new DesktopBuilder;
    Seller
* pSeller = new Seller;
    pSeller
->SetBuilder(pBuilder);
    pSeller
->Construct();
    cout 
<< "組裝一臺電腦,由下列部件組成:\n" << *(pBuilder->GetComputer()) << endl;

    
return 0;
}

最后輸出為:
組裝一臺電腦,由下列部件組成:
CPU 硬盤 主板

該例中,產品臺式電腦(DesktopProduct)由CPU、硬盤及主板組成,它的組成過程是交給構建器(DesktopBuilder)來組合的,而構建器又是由電腦組裝人員(Seller)來進行操作,最終,電腦組裝人員組裝完成一電腦,然后銷售組客戶。
posted on 2009-02-08 20:45 emptysoul 閱讀(442) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美视频在线观看视频| 亚洲一区二区视频在线| 欧美日韩国产色综合一二三四 | 亚洲人成77777在线观看网| 在线视频国产日韩| 在线亚洲欧美| 久久久久久电影| 牛牛影视久久网| 亚洲美女区一区| 亚洲欧美日韩另类| 国内伊人久久久久久网站视频 | 欧美色网一区二区| 国产日韩欧美成人| 亚洲欧洲精品一区二区三区| 欧美国产日韩视频| 亚洲欧美久久久| 欧美日韩999| 午夜精品久久99蜜桃的功能介绍| 美日韩精品视频免费看| 99精品国产热久久91蜜凸| 欧美一区二区国产| 欧美日韩精品免费 | 国产精一区二区三区| 亚洲二区在线视频| 久久精品卡一| 亚洲一线二线三线久久久| 欧美大香线蕉线伊人久久国产精品| 国产精品地址| 一本色道精品久久一区二区三区 | 日韩午夜精品视频| 欧美福利精品| 久久野战av| 国产亚洲网站| 亚洲欧美日韩视频一区| 日韩天堂av| 国产有码一区二区| 久久精品在线视频| 欧美久久九九| 亚洲精品一区二区在线| 午夜影院日韩| 亚洲先锋成人| 国产精品网站在线| 亚洲欧美日韩一区二区在线| 狂野欧美激情性xxxx| 一区二区三区在线免费观看| 久久一本综合频道| 久久精品91| 一区在线播放视频| 亚洲一区二区不卡免费| 亚洲精品美女久久7777777| 亚洲欧美日韩精品久久久久| 99av国产精品欲麻豆| 久久疯狂做爰流白浆xx| 午夜精品久久久99热福利| 欧美成人四级电影| 女人天堂亚洲aⅴ在线观看| 国产精品一区二区三区久久| 99视频一区| 亚洲精品综合精品自拍| 久久综合伊人77777蜜臀| 久久精品国产亚洲一区二区| 国产精品日韩高清| 9色精品在线| 正在播放亚洲一区| 亚洲自拍偷拍视频| 亚洲午夜精品久久| 欧美日韩国产综合新一区| 欧美激情2020午夜免费观看| 在线观看日韩www视频免费| 欧美成人免费全部观看天天性色| 国产亚洲福利社区一区| 午夜老司机精品| 日韩天堂在线视频| 欧美电影免费网站| 欧美激情一区三区| 亚洲人久久久| 欧美激情精品久久久久久| 亚洲一区在线观看免费观看电影高清| 欧美激情综合| 欧美亚洲网站| 国产美女在线精品免费观看| 亚洲一区二区免费视频| 欧美一区二区三区成人| 榴莲视频成人在线观看| 午夜精品成人在线| 国产女人aaa级久久久级| 亚洲国产国产亚洲一二三| 欧美成人日韩| 亚洲国产aⅴ天堂久久| 免费中文日韩| 久久男女视频| 国产精品免费观看在线| 亚洲高清在线| 中文精品视频| 国产午夜精品久久久久久久| 久久精品道一区二区三区| 亚洲第一福利视频| 亚洲一区二区黄| 国产一级揄自揄精品视频| 免费成人av| 亚洲在线观看| 免费视频一区二区三区在线观看| 亚洲精品国产视频| 国产精品一区三区| 欧美成人一区二区| 亚洲一区三区视频在线观看| 免费在线亚洲欧美| 亚洲午夜精品一区二区三区他趣| 国产亚洲激情| 欧美精品国产精品日韩精品| 亚洲欧美第一页| 亚洲电影观看| 久久精品人人做人人综合| 亚洲精品国产品国语在线app| 国产精品久久九九| 免费观看久久久4p| 亚洲一区二区三区精品在线观看 | 亚洲国产中文字幕在线观看| 久久精品女人| 鲁大师成人一区二区三区| 国内在线观看一区二区三区| 欧美久久久久久久久| 久久国产福利国产秒拍| 99精品国产福利在线观看免费 | 久久精品麻豆| 中文精品视频| 亚洲精品免费一区二区三区| 韩国精品久久久999| 国产精品久久激情| 欧美日韩精品一区二区三区四区| 久久精品五月| 校园激情久久| 中文av字幕一区| 久久福利影视| 亚洲第一在线视频| 国产亚洲第一区| 国产精品日本一区二区 | 午夜视频在线观看一区二区三区| 91久久夜色精品国产九色| 亚洲精品国产精品国自产观看| 国产日韩在线一区| 国产精品色网| 国产精品无码永久免费888| 欧美日韩一区在线观看视频| 亚洲欧美视频一区二区三区| 亚洲视频精选在线| 亚洲一品av免费观看| 在线综合亚洲| 中文精品一区二区三区| 一本色道久久加勒比精品| 久久一区二区三区av| 久久一区二区三区四区| 久久久久久自在自线| 久久久久久久综合狠狠综合| 久久精品国产精品| 久久视频精品在线| 欧美成ee人免费视频| 欧美激情视频网站| 亚洲经典自拍| 亚洲乱码国产乱码精品精天堂| 欧美在线黄色| 久久久久天天天天| 麻豆成人在线| 亚洲电影在线播放| 99re成人精品视频| 午夜精品久久久久久久99水蜜桃| 亚洲欧美怡红院| 久久视频一区二区| 欧美日本国产视频| 国产精品一卡二卡| 影音先锋亚洲电影| 这里只有精品视频在线| 亚欧美中日韩视频| 欧美α欧美αv大片| 亚洲美女视频在线免费观看| 亚洲一区综合| 免费国产一区二区| 欧美日韩一区免费| 国产资源精品在线观看| 亚洲精品激情| 香蕉久久久久久久av网站| 久久综合九色综合欧美狠狠| 亚洲高清久久网| 亚洲欧美在线磁力| 欧美成人首页| 国产一区二区三区在线观看免费视频| 亚洲国产日韩欧美在线图片| 亚洲综合欧美| 欧美韩日一区二区三区| 在线一区亚洲| 欧美ed2k| 国产亚洲日本欧美韩国| 在线亚洲伦理| 欧美不卡高清| 性欧美videos另类喷潮| 欧美精品一区二区三区一线天视频 | 久久精品人人爽| 亚洲精品一区二区三区婷婷月| 午夜国产精品视频| 欧美视频网站|