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

emptysoul

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  25 Posts :: 0 Stories :: 23 Comments :: 0 Trackbacks

常用鏈接

留言簿(18)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

構(gòu)建器模式(Builder)的目標(biāo)是將對(duì)象的創(chuàng)建與它的表示法分開(kāi),意味著創(chuàng)建過(guò)程保持原狀,但產(chǎn)生對(duì)象的表示法可能不同,它通常用來(lái)創(chuàng)建復(fù)雜的對(duì)象,這個(gè)對(duì)象是由多個(gè)組件組成的。
對(duì)于銷售組裝電腦的銷售商來(lái)說(shuō),他們要銷售電腦,而電腦通常由CPU、主板及硬盤等部件組成,這時(shí),電腦的組成就可以由Builder模式來(lái)解決。

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 
<< "組裝一臺(tái)電腦,由下列部件組成:\n" << *(pBuilder->GetComputer()) << endl;

    
return 0;
}

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

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

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   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>
            午夜精品福利一区二区蜜股av| 日韩一级黄色片| 久久se精品一区二区| 国产视频欧美视频| 久久影院午夜论| 亚洲免费观看| 久久九九精品| 亚洲视频1区2区| 亚洲国产精品精华液2区45| 欧美日韩一区在线| 久久综合九色欧美综合狠狠| 久久先锋影音| 欧美一区在线视频| 中文av字幕一区| 亚洲国产视频一区| 国内成人精品视频| 国产精品色在线| 欧美日韩在线播放一区| 国产精品久久久久久久午夜| 欧美日韩一区免费| 国产资源精品在线观看| 亚洲精品在线观| 亚洲福利在线视频| 亚洲一区不卡| 亚洲一区二三| 亚洲欧美日韩国产中文| 亚洲自拍偷拍一区| 欧美国产免费| 午夜亚洲福利在线老司机| 美女尤物久久精品| 久久综合九色综合久99| 久久久久亚洲综合| 久久精品噜噜噜成人av农村| 香蕉亚洲视频| 久久不见久久见免费视频1| 欧美成人激情视频免费观看| 欧美aaa级| 午夜免费日韩视频| 久久精品国产精品亚洲| 久久国内精品自在自线400部| 免费毛片一区二区三区久久久| 麻豆免费精品视频| 欧美精品videossex性护士| 女女同性女同一区二区三区91| 国产精品久久久久免费a∨大胸| 亚洲国产精品久久91精品| 欧美一区二区在线播放| 欧美婷婷久久| 亚洲国产欧美日韩精品| 亚洲影院免费| 欧美一区二区三区日韩视频| 欧美在现视频| 国产精品女主播在线观看| 亚洲伦理自拍| 亚洲第一偷拍| 亚洲一级免费视频| 久久久久久成人| 欧美精品亚洲| 亚洲美女性视频| 亚洲国产精品成人综合| 欧美成人资源网| 国产欧美日韩不卡免费| 亚洲电影毛片| 在线亚洲电影| 久久久777| 欧美在线你懂的| 黄色小说综合网站| 99亚洲精品| 久久久www成人免费精品| 亚洲视频免费在线| 国产精品日韩在线观看| 欧美专区亚洲专区| 欧美一区二区视频97| 黄色日韩精品| 亚洲欧洲在线观看| 欧美影视一区| 好看的av在线不卡观看| 免费亚洲一区| 欧美精品七区| 性8sex亚洲区入口| 久久人体大胆视频| 亚洲老板91色精品久久| 一区二区欧美日韩| 欧美大片一区| 一区二区av在线| 亚洲一区免费网站| 亚洲高清三级视频| 午夜在线观看免费一区| 国产精品一区二区a| 亚洲美女色禁图| aaa亚洲精品一二三区| 久久综合狠狠综合久久综青草| 亚洲欧洲精品一区| 免费久久99精品国产自| 欧美韩日高清| 在线观看国产日韩| 久久久久久久综合日本| 久久一区二区视频| 亚洲男人的天堂在线| 欧美成人国产一区二区| 欧美在线亚洲在线| 欧美国产先锋| 亚洲国产精品一区二区久| 欧美一区综合| 欧美日韩国产影院| 亚洲精品美女| 亚洲区国产区| 亚洲免费观看高清完整版在线观看| 亚洲私人影院在线观看| 一区二区三区在线视频免费观看| 性欧美大战久久久久久久免费观看| 久久国产精品久久久| 亚洲一区www| 欧美国产激情二区三区| 久久免费观看视频| 国产精品一区二区男女羞羞无遮挡| 亚洲激情啪啪| 在线精品视频免费观看| 亚洲在线成人| 亚洲一区二区三区免费在线观看| 麻豆成人精品| 麻豆免费精品视频| 久久亚洲综合网| 性欧美8khd高清极品| 欧美日韩午夜剧场| 亚洲激情视频| 亚洲精品一二三区| 欧美成人精品一区| 欧美华人在线视频| 亚洲高清一二三区| 免费在线观看日韩欧美| 欧美高清视频一区二区三区在线观看| 国产午夜精品久久久久久久| 亚洲一区二区三区涩| 亚洲男人的天堂在线| 欧美亚州一区二区三区| 欧美中文字幕在线| 国产日韩欧美成人| 性欧美暴力猛交另类hd| 久久福利资源站| 国产一区亚洲| 久久一区二区三区国产精品 | 久久九九国产| 亚洲靠逼com| 欧美成人福利视频| 亚洲理伦在线| 在线成人国产| 免费不卡欧美自拍视频| 亚洲成色777777在线观看影院| 欧美视频一区二| 99国产精品久久久久久久| 亚洲香蕉成视频在线观看| 国产精品久久久久毛片大屁完整版 | 在线观看不卡av| 免费中文日韩| 日韩一级精品视频在线观看| 亚洲性感美女99在线| 国产老女人精品毛片久久| 欧美在线视频二区| 亚洲高清资源| 午夜精品成人在线视频| 黑人操亚洲美女惩罚| 欧美激情bt| 亚洲欧美中文在线视频| 夜夜嗨av一区二区三区网站四季av | 一本一道久久综合狠狠老精东影业 | 亚洲国产欧美日韩| 午夜久久一区| 欧美电影在线观看| 一区二区精品在线| 黄色日韩精品| 国产精品va在线播放我和闺蜜| 午夜精品在线| 最新亚洲视频| 久久久精品国产免大香伊| 亚洲精品久久久久中文字幕欢迎你| 欧美三级中文字幕在线观看| 久久精品91久久香蕉加勒比| 亚洲精品永久免费精品| 久久综合色播五月| 亚洲免费中文字幕| 亚洲精选中文字幕| 国内精品久久久久久影视8| 欧美日韩国产三区| 久久久亚洲欧洲日产国码αv| 在线综合+亚洲+欧美中文字幕| 毛片av中文字幕一区二区| 亚洲一区二区三区四区五区午夜| 亚洲成人资源网| 国产一区二区视频在线观看| 性色av一区二区三区| 亚洲精品视频免费观看| 久久中文欧美| 欧美一区二区| 亚洲午夜在线| 9i看片成人免费高清| 亚洲国产高清一区| 黄色亚洲免费| 国产资源精品在线观看| 国产欧美日韩精品一区|