标签:
// 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