设计模式之前言
1. 模式
在一定环境中解决某一问题的方案,包括三个基本元素:问题、解决方案和环境。
2. 设计模式
(1)设计模式是一套反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解,保证代码可靠性。毫无疑问,设计模式于已于系统是多赢的。
(2)设计模式使代码编制真正工程化。设计模式使软件工程的基石脉络,如同桥梁的结构一样。设计模式的基础是多态。
1)实现多态的三个条件:继承、父类指针(或引用)指向子类对象,虚函数重写;
2)多态实现原理:vptr指针和虚函数表。 c++编译器为每一个含有虚函数的子类或父类提前分配一个vptr指针,通过vptr指针找到虚函数表,根据虚函数表找后来人写的代码。
3.学习设计模式的意义
提高职业素养,关注学员在行业内的长期发展。
4. 学习设计模式的方法
(1)对于初学者:积累案例,大于背类图。
(2)初级开发人员:多思考、多梳理,归纳总结;尊重事务的认知规律,注意事务临界点的突破,不可浮躁。
(3)中级开发人员:合适的开发环境,寻找合适的设计模式,解决问题;多应用;对经典组合设计模式的大量、*的应用,要不断的追求。
5. 设计模式的分类
分为三大类创建型模式、构建型模式和行为模式。
(1)创建型模式:通常和对象的创建有关,涉及到对象实例化的方式。(包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式5种创建型模式)
(2)构建型模式:描述的是如何组合类和对象以获得更大的结构。(包括代理模式、装饰者模式、适配器模式、桥接模式、组合模式、外观模式、享元模式7种构建型模式)
(3)行为模式:对类或者对象怎样交互和怎样分配职责进行描述。(包括模板模式、命令模式、责任链模式、策略模式、中介者模式、观察者模式、备忘录模式、访问者模式、状态模式、解释器模式和迭代器模式共11种模式)
6. 设计模式基本原则
(1)最终目标:高内聚,低耦合。
(2)基本原则
下面将举例介绍开放封闭原则、依赖倒置原则和迪米特法则三种(注:上图红色五角星标注原则)
1)开放封闭原则
案列图:
2)依赖倒置原则
案列图:
3)迪米特法则
案列图: