zoukankan      html  css  js  c++  java
  • 设计模式享元模式实现C++

    /*********************************
    *设计模式--享元模式实现
    *C++语言
    *Author:WangYong
    *Blog:http://www.cnblogs.com/newwy
    ********************************/
    #include <iostream>
    #include <cassert>
    #include <vector>
    #include <string>
    using namespace std;
    class Flyweight
    {
    	public:
    	virtual ~Flyweight(){}
    	virtual void Operation(const string & extrinsicState){}
    	string GetIntrinsicState(){return this->_intrinsicState;}
    	protected:
    	Flyweight(string intrinsicState){this->_intrinsicState = _intrinsicState;}
    	private:
    	string _intrinsicState;
    };
    class ConcreteFlyweight:public Flyweight
    {
    	public:
    	ConcreteFlyweight(string intrinsicState):Flyweight(intrinsicState)
    	{cout<<"ConcreteFlyweight Build ...."<<intrinsicState<<endl;}
    	~ConcreteFlyweight(){}
    	void Operation(const string & extrinsicState)
    	{
    		cout<<"ConcreteFlyweight:内蕴"<<this->GetIntrinsicState()
    		<<"ConcreteFlyweight:外蕴"<<extrinsicState<<endl;
    	}
    };
    class FlyweightFactory
    {
    	public:
    	FlyweightFactory(){}
    	~FlyweightFactory(){}
    	Flyweight * GetFlyweight(const string &key)
    	{
    		vector<Flyweight *>::iterator it = _fly.begin();
    		for(;it != _fly.end(); it++)
    		{
    			if( (*it)->GetIntrinsicState() == key)
    				cout<<"already created by users..."<<endl;
    			return *it;
    		}
    		Flyweight *fn = new ConcreteFlyweight(key);
    		_fly.push_back(fn);
    		return fn;	
    	}
    	private:
    	vector<Flyweight*> _fly;
    };
    int main()
    {
    	FlyweightFactory *fc = new FlyweightFactory();
    	Flyweight * fw1 = fc->GetFlyweight("hello");
    	Flyweight * fw2 = fc->GetFlyweight("world!");
    	Flyweight * fw3 = fc->GetFlyweight("hello");
    }
    
    
  • 相关阅读:
    概率期望小记
    洛谷P5591 小猪佩奇学数学【单位根反演】
    EasyUI取消树节点选中
    EasyUI获取正在编辑状态行的索引
    js判断是否是大小写,数字等方法
    ElasticSearch部署问题
    全文检索ES 服务启动和关闭
    文件异步上传
    js控制时间显示格式
    SpringMVC 多视图解析器 跳转问题
  • 原文地址:https://www.cnblogs.com/newwy/p/1855224.html
Copyright © 2011-2022 走看看