面向对象编程中的设计模式
最近在复习(预习)软考,看到了设计模式这个知识点,打算小做总结一下~~
设计模式(Design pattern):是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代 码可靠性。
| 类 | 创建型 | 结构型 | 行为型 |
| 对象 | Factory Method | Adapter_class |
Interpreter Template Method |
| Abstract Factory | Adapter_obiect |
Chain of Responsibility |
|
| Builder | Bridge | Command | |
| Prototype | Composite | Iterator | |
| Singleton | Decorator | Mediator | |
| Facade | Memento | ||
| Flyweight | Observer | ||
| Proxy | State | ||
| Strategy | |||
| Visitor |
设计模式分为三种类型,共23种。(红色标注常用的)
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。
设计模式的要素:
1) 模式名称(pattern name):助记名,描述模式的问题、解决方案和效果。
2)问题(problem):描述了应该在何时实用模式
3)解决方案(solution):描述了设计的组成成分。
4)效果(consequences):描述了模式应用的效果及使用模式应权衡的问题
创建型:抽象了实例化过程,帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例的类,而一个对象创建型模式将实例化委托给另一个对象。
结构型:采用继承机制来组合借口或实现。尤其有助于多个独立开发的类库协同工作。
行为型:涉及到算法和对象间职责的分配。不仅描述对象和类的模式,还描述它们之间的通信哦是。这些模式刻画了在运行时难以跟踪的复杂的控制流。使用继承机制在类间分配行为。
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
1 //单例模式应用 2 /**************************************************** 3 通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置 4 文件汇总。应用西永在启动时首先将配置文件加载到内存中,这些内存 5 配置信息应该有且仅有一份。应用单例模式以保证Configure类只能有 6 一个实例。这样,Configure类的使用者无法定义该类的多个实例,否 7 则编译出错。 8 *****************************************************/ 9 #include<iostream> 10 class Configure{ 11 protected: 12 Configure(); 13 public: 14 static Configure*Instance(); //获取配置信息 15 int GetConfigureData(){return data;}; 16 int SetConfigure(int m_data){data=m_data;return data;}; //设置配置信息 17 private: 18 static Configure* _instance; 19 int data; //配置信息 20 } 21 22 Configure::_instance=NULL; 23 24 Configure*Configure::Instance(){ 25 if(_instance==NULL){ 26 _instance=new Configure(); 27 //加载配置文件并设置内存配置信息的代码 28 } 29 return _instance; 30 } 31 32 void main(){ 33 Configure *t=NULL; 34 t=Instance(); 35 int d=t->GetConfigureData(); 36 //获取配置信息后进行其他工作的得到代码 37 }