内部状态与外部状态

网站共享代码

#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;
}

何时使用享元模式

12-26 23:04
查看更多