内部状态与外部状态
网站共享代码
#include <iostream>
#include<vector>
#include<string>
#include<ctime>
#include<unordered_map>
using namespace std;
class User
{
private:
string name;
public:
User(string name_t)
{
name = name_t;
}
string getName() { return name; }
};
class WebSite
{
public:
virtual void Use(User* user) = 0;
};
class ConcreteWebSite :public WebSite
{
private:
string name;
public:
ConcreteWebSite(string name_t)
{
name = name_t;
}
void Use(User* user)
{
cout << "网站分类 " << name << " 用户 " << user->getName() << endl;
}
};
class WebSiteFactory
{
private:
unordered_map<string, WebSite*> m;
public:
WebSite* GetWebSiteCategory(string key)
{
if (!m.count(key))
m[key] = new ConcreteWebSite(key);
return m[key];
}
};
int main()
{
WebSiteFactory* f = new WebSiteFactory();
WebSite* fx = f->GetWebSiteCategory("产品展示");
fx->Use(new User("小菜"));
WebSite* fy = f->GetWebSiteCategory("产品展示");
fx->Use(new User("大鸟"));
WebSite* fz = f->GetWebSiteCategory("产品展示");
fx->Use(new User("娇娇"));
WebSite* fl = f->GetWebSiteCategory("博客");
fl->Use(new User("笑笑"));
WebSite* fm = f->GetWebSiteCategory("博客");
fm->Use(new User("啊啊"));
WebSite* fn = f->GetWebSiteCategory("博客");
fn->Use(new User("安安"));
system("pause");
return 0;
}
何时使用享元模式