目录
0.学习链接
1.初识设计模式
1.1 什么是设计模式
每一个模式描述了一个在我们周围不断重复发生的问题以及该问题的解决方案的核心,可复用该方案而不必做重复来动.
1.2 学习目标
理解松耦合
掌握面向对象设计的原则
掌握重构技巧改善设计
掌握GOF核心设计模式
1.3 需要具备的素质
底层思维:语言构造,编译转换,内存模型,运行时机制
抽象思维:面向对象,,组件封装,设计模式,架构模式
1.4 设计模式最终目的
1.复用!
2.抵御变化!
1.5 产业强盛的标志
接口标准化.
2.面向对象设计原则
2.1 依赖倒置原则(DIP)
高层模块稳定不应该依赖于底层模块变化,二者都应该依赖于抽象稳定;
抽象稳定不应该依赖于实现细节变化,实现细节应该依赖于抽象稳定.
2.2 开放封闭原则(OCP)
对扩展开放,对更改封闭;
类模块应该是可拓展的,但是不可以修改.
2.3 单一职责原则(SRP)
一个类应该仅仅有一个引起它变化的原因;
变化的方向隐含着类的责任.
2.4 Liskov替换原则(LSP)
子类必须能够替换它们的基类(IS-A);
继承表达式抽象.
2.5 接口隔离原则(ISP)
不应该强迫客户程序依赖它们不用的方法;
接口应该小而完备.
2.6 优先使用对象组合,而不是类继承
优先使用对象组合,而不是类继承:
类继承通常为“白箱复用”,对象组合常常为“黑箱复用”;
继承在某种程度上破坏了封装性,子类父类耦合度高;
而对象组合则只要要求被组合的对象具有良好定义的接口,耦合度低.
2.7 封装变化点
使用封装来创建对象之间的分界层,让设计者可以在分层的一侧进行修改,而不会对
另一层产生不良的影响,从而实现层次之间的松耦合.
2.8 针对接口编程,而不是针对实现编程
不将变量类型声明为某个特定的具体类,而是声明为某个接口;
客户端无序货值对象的具体类型,只需要知道对象所具有的接口;
减少系统中各部分的依赖关系,从而实现“高内聚,松耦合”的类型设计方案.
3.设计模式分类
3.1 GOF-23 模式分类
从目的总体来说设计模式分为三大类:
创建型模式,共五种:
工厂方法模式,
抽象工厂模式,
单例模式,
建造者模式,
原型模式.
结构型模式,共七种:
适配器模式,
装饰器模式,
代理模式,
外观模式,
桥接模式,
组合模式,
享元模式.
行为型模式,共十一种:
策略模式,
模板方法模式,
观察者模式,
迭代子模式,
责任链模式,
命令模式,
备忘录模式,
状态模式,
访问者模式,
中介者模式,
解释器模式.
从范围来看:
类模式处理类与子类的静态关系;
对象模式处理对象间的动态关系.
3.2 李建忠老师在课程中的分类方法
我觉得老师这个分类方法太棒了!
3.2.1 “组件协作”模式
现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件模式”通过晚期绑定,来实现框架
与应用之间的松耦合,是二者之间协作时常用的模式.
“组件模式”的动机:
在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需
求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现.
如何在稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求?
4.重构关键技法
静态 -------> 动态
早绑定 -------> 晚绑定
继承 -------> 组合
编译时依赖 -------> 运行时依赖
紧耦合 -------> 松耦合