MyCharacter.h
#include <iostream>
using namespace std;
class MyCharacter{
char myChar;
public:
MyCharacter(char c);
void display();
};
MyCharacter.cpp
#include "MyCharacter.h"
MyCharacter::MyCharacter(char c){
myChar = c;
}
void MyCharacter::display(){
cout<<myChar<<endl;
}
MyCharacterFactory.h
#include "MyCharacter.h"
#include <map>
using namespace std;
class MyCharacterFactory{
map<char, MyCharacter*>* pool;
public:
MyCharacterFactory();
MyCharacter* getCharacter(char c);
};
MyCharacterFactory.cpp
#include "MyCharacterFactory.h"
MyCharacterFactory::MyCharacterFactory(){
pool=new map<char, MyCharacter*>();
}
MyCharacter* MyCharacterFactory::getCharacter(char c){
MyCharacter* myChar;
map<char, MyCharacter*>::iterator iter;
iter=pool->find(c);
if(iter==pool->end()){
myChar= new MyCharacter(c);
pool->insert(map<char,MyCharacter*>::value_type(c,myChar));
}else{
myChar=iter->second;
}
return myChar;
}
Client
#include "MyCharacterFactory.h"
void main(){
//MyCharacter* myChar1 = new MyCharacter('a');
//MyCharacter* myChar2 = new MyCharacter('b');
//MyCharacter* myChar3 = new MyCharacter('a');
//MyCharacter* myChar4 = new MyCharacter('d');
MyCharacterFactory* fac = new MyCharacterFactory();
MyCharacter* myChar1 = fac->getCharacter('a');
MyCharacter* myChar2 = fac->getCharacter('b');
MyCharacter* myChar3 = fac->getCharacter('a');
MyCharacter* myChar4 = fac->getCharacter('d');
myChar1->display();
myChar2->display();
myChar3->display();
myChar4->display();
if(myChar1==myChar3){
cout<<"true"<<endl;
}else{
cout<<"false"<<endl;
}
}
输出结果为