标签:
// Design Pattern.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Character
{
private:
int x, y, z;
public:
void SetPos(int x, int y, int z)
{
this->x = x;
this->y = y;
this->z = z;
}
void Render()
{
cout << "绘制人物, 位置:" << std::to_string(x) + std::to_string(y) + std::to_string(z) << endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Character* char1 = new Character();
Character* char2 = new Character();
Character* char3 = new Character();
char1->SetPos(1, 1, 1);
char2->SetPos(2, 2, 2);
char3->SetPos(3, 3, 3);
char1->Render();
char2->Render();
char3->Render();
system("pause");
return 0;
}
结果:// Design Pattern.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
//基类:flyWeight
class BaseCharacter
{
public:
virtual void Render(int x, int y, int z) = 0;
};
//具体类,ConcreateFlyweight
class Character : public BaseCharacter
{
public:
void Render(int x, int y, int z) override
{
cout << "绘制人物, 位置:" << std::to_string(x) + std::to_string(y) + std::to_string(z) << endl;
}
};
//工厂类,FlyWeightFactory
class CharacterFactory
{
private:
map<string, BaseCharacter*> charMap;
public:
BaseCharacter* GetCharacter(string name)
{
map<string, BaseCharacter*>::iterator it = charMap.find(name);
if(it == charMap.end())
{
BaseCharacter* c = new Character();
charMap.insert(make_pair(name, c));
return c;
}
return it->second;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
CharacterFactory* factory = new CharacterFactory();
BaseCharacter* char1 = factory->GetCharacter("char");
BaseCharacter* char2 = factory->GetCharacter("char");
BaseCharacter* char3 = factory->GetCharacter("char");
char1->Render(1,1,1);
char2->Render(2,2,2);
char3->Render(3,3,3);
cout << "char1地址" << char1 << endl;
cout << "char2地址" << char2 << endl;
cout << "char3地址" << char3 << endl;
system("pause");
return 0;
}
结果:标签:
原文地址:http://blog.csdn.net/puppet_master/article/details/51361755