概述:
什么是模式!!
每个模式概述了一个问题,该问题反复在我们的周围出现,每个模式给出了对该问题的核心解决办法,因此,人们可以反复给出了对该问题的核心解决办法,人们可以反复使用给解决方法解决类似问题。
为什么学习模式!!
1.模式可以帮助我们学习成功人士的经验,从而避免失误
2.提升我们的认知
3.读懂源代码,提升自己代码的水平
4.面试工作的必备技能
模式和框架的比较:
1.模式(Patterns)
1.1支持软件的结构和设计的重用
1.2抓住了特定领域中问题的成功解决方案中的静态,动态结果和相互之间的协作关系
1.3patterns与开发语言无关,但是建立在一定的环境基础上
1.4例如:经典的MVC、Factory Method
2.框架(Frameworks)
2.1支持细节设计和代码的重用
2.2framework是一组组件的综合,这些组件相互协作,为一族相关应用提供了一个可重用的框架结构
3.两者结合
3.1提高软件的质量
3.2重用性,扩展性,性能,可维护性
4.框架的HOllyood Principle
-(“Don’t call us,We’ll call you.”)
5.模式和框架的比较:
5.1设计模式比框架更抽象
5.2和框架相比,设计模式是更小单元的架构元素
5.3从使用的广度来说,设计模式比框架更广,它与应用的相关性更小
设计模式研究的历史
关于pattern的历史
-A Pattern Language, Christopher Alexander,1997
-”Advanced C++ : Programming Styles and ldims,” James Coplien, 1992
-”Design Patterns: Elements of Reusable Object - Oriented Software”,GOF,1995
-”Pattern-Oriented Software Architecture: A System of Patterns”(简单”POSA”),GoV,1996
Gang of Four(GoF)
关于”Design”Pattern”
1.对已有模式的整理、分类
2.一套描述模式的词汇,可用于交流和文档化
3.为软件设计总结了宝贵的经验,这些设计经验可以被重用,但不是简单的代码重用
4.分类:
-Creational Patterns
-Structural Patterns
-Behavioral Patterns
5.在软件设计模式领域,起到先驱的作用
重提:指导模式设计的三个概念
1.重用(reuse):是目标
-两种重要的重用手段
·Inheritance & composition
2.接口与实现分离
-接口保持不变,分离带来
-多态性(polymorphism)
3.Decouple
-降低复杂性
如何描述一个模式
1.关键要素
-模式名称
-问题,动机
-约束
-上下文
2.解决方案
-结构(Structure)
-参与者(Participants)
-协作(Collaboration)
-实现(Implementation)
3.评测
4.相关模式