设计模式C++实现:管理者模式
2016-02-02 20:06
337 查看
动机:为管理一组相关对象的实例化和访问提供统一的接口。管理者使用和扩展单例模式,它们本身就是单例,并且它们可能确保它们管理的对象是唯一的。
代码示例:
优缺点:
优点:为一组相关的对象提供一个统一的全局访问点,同时可以提供一些简洁的接口来获取和操作这些对象。同时,可以优化运行时性能。
缺点:由于管理者大多采用单例模式,所以,它继承了单例模式所有的缺点。
总结:
管理者模式是其他一些模式(如单例、外观和控制器)的融合与一般化。凡那些对象,在运行时创建的时间开销特别大时,而又要经常重复使用时,都可以采取此模式来提高运行时性能。
代码示例:
#include <iostream> #include <string> #include <map> using namespace std; class Animal { public: virtual void eat(){cout<<"animal eat"<<endl;} }; class Dog:public Animal { public: void eat(){cout<<"dog eat"<<endl;} }; class Cat:public Animal { public: void eat(){cout<<"Cat eat"<<endl;} }; class AnimalManager { public: static AnimalManager* GetInstance() { if(instance == NULL) { instance = new AnimalManager(); } return instance; } void SetAnimal(string name, Animal *animal) { m_map[name] = animal; } void GetAnimal(string name, Animal *&animal) { animal = m_map[name]; } public: typedef map<string, Animal*> AnimalMap; private: AnimalMap m_map; static AnimalManager* instance; }; AnimalManager* AnimalManager::instance = NULL; int main () { Dog *dog1 = new Dog(); AnimalManager::GetInstance()->SetAnimal("kity", dog1); Animal *animal = NULL; AnimalManager::GetInstance()->GetAnimal("kity", animal); animal->eat(); return 0; }
优缺点:
优点:为一组相关的对象提供一个统一的全局访问点,同时可以提供一些简洁的接口来获取和操作这些对象。同时,可以优化运行时性能。
缺点:由于管理者大多采用单例模式,所以,它继承了单例模式所有的缺点。
总结:
管理者模式是其他一些模式(如单例、外观和控制器)的融合与一般化。凡那些对象,在运行时创建的时间开销特别大时,而又要经常重复使用时,都可以采取此模式来提高运行时性能。
相关文章推荐
- Cocos2d-x 设计模式 (3):管理者模式
- asm基础——asm函数和c++函数之间的相互调用
- sqlite3对数据库加密用c语言开源项目wxSQLite3实现
- 用C++ Builder实现一组数组的排序与插入操作
- C++引用计数(reference counting)技术简介(3)
- C++引用计数(reference counting)技术简介(3)
- 学习C++
- C/C++: Inline function, calloc vs malloc
- C/C++: Inline function, calloc vs malloc
- C/C++: Inline function, calloc vs malloc
- C/C++: Inline function, calloc vs malloc
- C/C++: Inline function, calloc vs malloc
- C/C++: Inline function, calloc vs malloc
- ||C||<基础>C语言基础知识框架结构//个人整理使用|仅供参考|
- 基础知识(十)C++常用函数.txt
- 逐梦C++之四:四种强制类型转换
- 第二次作业——C++学习
- 第二次作业——C++学习
- C语言堆栈入门——堆和栈的区别
- C++ struct 定义及初始化