17种设计模式代码Word下载.docx

上传人:b****5 文档编号:20287034 上传时间:2023-01-21 格式:DOCX 页数:48 大小:24.62KB
下载 相关 举报
17种设计模式代码Word下载.docx_第1页
第1页 / 共48页
17种设计模式代码Word下载.docx_第2页
第2页 / 共48页
17种设计模式代码Word下载.docx_第3页
第3页 / 共48页
17种设计模式代码Word下载.docx_第4页
第4页 / 共48页
17种设计模式代码Word下载.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

17种设计模式代码Word下载.docx

《17种设计模式代码Word下载.docx》由会员分享,可在线阅读,更多相关《17种设计模式代码Word下载.docx(48页珍藏版)》请在冰豆网上搜索。

17种设计模式代码Word下载.docx

Sequence*s1=newStack();

Sequence*s2=newQueue();

s1->

push

(1);

pop();

s2->

deletes1;

deletes2;

return0;

}

2、建造者模式building

classBuilder

virtualvoidBuildHead(){}

virtualvoidBuildBody(){}

virtualvoidBuildLeftArm(){}

virtualvoidBuildRightArm(){}

virtualvoidBuildLeftLeg(){}

virtualvoidBuildRightLeg(){}

//构造瘦人

classThinBuilder:

publicBuilder

voidBuildHead(){cout<

buildthinbody"

voidBuildBody(){cout<

buildthinhead"

voidBuildLeftArm(){cout<

buildthinleftarm"

voidBuildRightArm(){cout<

buildthinrightarm"

voidBuildLeftLeg(){cout<

buildthinleftleg"

voidBuildRightLeg(){cout<

buildthinrightleg"

//构造胖人

classFatBuilder:

buildfatbody"

buildfathead"

buildfatleftarm"

buildfatrightarm"

buildfatleftleg"

buildfatrightleg"

//构造的指挥官

classDirector

Builder*m_pBuilder;

Director(Builder*builder){m_pBuilder=builder;

voidCreate(){

m_pBuilder->

BuildHead();

BuildBody();

BuildLeftArm();

BuildRightArm();

BuildLeftLeg();

BuildRightLeg();

FatBuilderthin;

Directordirector(&

thin);

director.Create();

3、策略模式

classCOperation

{public:

intm_nFirst;

intm_nSecond;

virtualdoubleGetResult()

{

doubledResult=0;

returndResult;

}

//策略具体类—加法类

classAddOperation:

publicCOperation

AddOperation(inta,intb)

{

m_nFirst=a;

m_nSecond=b;

virtualdoubleGetResult()

returnm_nFirst+m_nSecond;

classSubstrOperation:

SubstrOperation(inta,intb)

returnm_nFirst-m_nSecond;

classContext

COperation*op;

Context(COperation*temp)

op=temp;

doubleGetResult()

returnop->

GetResult();

//客户端

inta,b;

charc;

cin>

>

a>

b;

cout<

请输入运算符"

;

cin>

c;

switch(c)

case'

+'

:

{

Context*context1=newContext(newAddOperation(a,b));

cout<

context1->

GetResult()<

endl;

break;

}

case'

-'

Context*context2=newContext(newSubstrOperation(a,b));

context2->

4、抽象模式

classButton

virtualvoidpaint()=0;

classWinButton:

publicButton

voidpaint(){

std:

cout<

"

WindowButton\n"

classMacButton:

MacButton\n"

classScrollBar

classWinScrollBar:

publicScrollBar

WindowScrollBar\n"

classMacScrollBar:

publicScrollBar{

MacScrollBar\n"

classGUIFactory

virtualButton*createButton()=0;

virtualScrollBar*createScrollBar()=0;

classWinFactory:

publicGUIFactory

Button*createButton(){

returnnewWinButton;

ScrollBar*createScrollBar(){

returnnewWinScrollBar;

classMacFactory:

returnnewMacButton;

returnnewMacScrollBar;

GUIFactory*guiFactory;

Button*btn;

ScrollBar*sb;

guiFactory=newMacFactory;

btn=guiFactory->

createButton();

btn->

paint();

sb=guiFactory->

createScrollBar();

sb->

guiFactory=newWinFactory;

}

5、代理模式

string>

classBigImage

BigImage(stringname):

m_imageName(name){}

virtual~BigImage(){}

virtualvoidShow(){}

protected:

stringm_imageName;

//真实类

classRealBigImage:

publicBigImage

RealBigImage(stringname):

BigImage(name){}

~RealBigImage(){}

voidShow()

cout<

Showbigimage:

m_imageName<

//代理

classProxy:

RealBigImage*m_bigImage;

Proxy(stringname):

BigImage(name),m_bigImage(0)

{}

~Proxy()

deletem_bigImage;

if(m_bigImage==NULL)

pleasewait..."

m_bigImage=newRealBigImage(m_imageName);

//代理创建真实对象

m_bigImage->

Show();

BigImage*image=newProxy("

SomeBigPic.jpg"

);

//使用代理

image->

//代理的操作

deleteimage;

6、非享元模式

vector>

//棋子颜色

enumPieceColor{BLACK,WHITE};

//棋子位置

structPiecePos

intx;

inty;

PiecePos(inta,intb):

x(a),y(b){}

//棋子定义

classPiece

PieceColorm_color;

//颜色

PiecePosm_pos;

//位置

Piece(PieceColorcolor,PiecePospos):

m_color(color),m_pos(pos){}

~Piece(){}

virtualvoidDraw(){}

classBlackPiece:

publicPiece

BlackPiece(PieceColorcolor,PiecePospos):

Piece(color,pos){}

~BlackPiece(){}

voidDraw(){cout<

绘制一颗黑棋"

classWhitePiece:

WhitePiece(PieceColorcolor,PiecePospos):

~WhitePiece(){}

绘制一颗白棋"

classPieceBoard

vector<

Piece*>

m_vecPiece;

//棋盘上已有的棋子

stringm_blackName;

//黑方名称

stringm_whiteName;

//白方名称

PieceBoard(stringblack,stringwhite):

m_blackName(black),m_whiteName(white){}

~PieceBoard(){Clear();

voidSetPiece(PieceColorcolor,PiecePospos)//一步棋,在棋盘上放一颗棋子

Piece*piece=NULL;

if(color==BLACK)//黑方下的

piece=newBlackPiece(color,pos);

//获取一颗黑棋

m_blackName<

在位置("

pos.x<

'

'

pos.y<

)"

piece->

Draw();

//在棋盘上绘制出棋子

else

piece=newWhitePiece(color,pos);

cout<

m_whiteName<

m_vecPiece.push_back(piece);

//加入容器中

voidClear()//释放内存

intsize=m_vecPiece.size();

for(inti=0;

i<

size;

i++)

deletem_vecPiece[i];

PieceBoardpieceBoard("

A"

"

B"

pieceBoard.SetPiece(BLACK,PiecePos(4,4));

pieceBoard.SetPiece(WHITE,PiecePos(4,16));

pieceBoard.SetPiece(BLACK,PiecePos(16,4));

pieceBoard.SetPiece(WHITE,PiecePos(16,16));

7、工厂方法

classButton

{

classOSXButton:

publicButton

voidpaint()

{

cout<

OSXbutton\n"

}

classWindowsButton:

Windowsbutton\n"

classGUIFactory

virtualButton*createButton()=0;

classFactory1:

publicGUIFactory

Button*createButton()

returnnewWindowsButton;

classFactory2:

returnnewOSXButton;

intmain()

GUIFactory*guiFactory1,*guiFactory2;

Button*btn1,*btn2;

guiFactory1=newFactory1;

btn1=guiFactory1->

btn1->

guiFactory2=newFactory2;

btn2=guiFactory2->

btn2->

8、观察者模式

list>

classObserver

Observer(){}

virtual~Observer(){}

virtualvoidUpdate(){}

//博客

classBlog

Blog(){}

virtual~Blog(){}

voidAttach(Observer*observer){m_observers.push_back(observer);

}//添加观察者

voidRemove(Observer*observer){m_observers.remove(observer);

}//移除观察者

voidNotify()//通知观察者

list<

Observer*>

iteratoriter=m_observers.begin();

for(;

iter!

=m_observers.end();

iter++)

(*iter)->

Update();

virtualvoidSetStatus(strings){m_status=s;

}//设置状态

virtualstringGetStatus(){returnm_status;

}//获得状态

Observer*>

m_observers;

//观察者链表

stringm_status;

//状态

//具体博客类

classBlogCSDN:

publicBlog

stringm_name;

//博主名称

BlogCSDN(stringname

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1