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");
    }
    
    
  • 相关阅读:
    用户代理列表--爬虫伪装浏览器访问用
    python爬虫解析页面数据的三种方式
    requests模块的使用
    Python pip源更改
    个人博客项目开发
    Django之中间件
    Django之发送邮件
    Django组件之用户认证组件
    Django之Cookie与session
    Django组件之分页器
  • 原文地址:https://www.cnblogs.com/newwy/p/1855224.html
Copyright © 2011-2022 走看看