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");
    }
    
    
  • 相关阅读:
    sql server紧急状态下登录脚本
    将SQL for xml path('')中转义的字符正常显示
    SQL查询表中的有那些索引
    Set ARITHABORT Option设置为ON
    检测重编译
    计划指南
    sql server 清理缓存
    变量绑定
    分析及动态采样
    Hint
  • 原文地址:https://www.cnblogs.com/newwy/p/1855224.html
Copyright © 2011-2022 走看看