设计模式入坑篇
定义
一个已被记录的最佳解决方案,并成功应用在许多案例中,目的是解决了在某种特定情境中重复发生的某个问题。(不是解决任何问题都需要从头做起)
注意
一个现实的系统中总是由多个模块所组成,不同的模块可能应用不同的设计模式,其他模块的设计模式在该模块中可能无法适用。
即:
设计模式是在某种特定上下文中,针对一个软件生命周期中出现的问题而给出的多次适用的解决方案。它的根本目标是:(1)用来帮助提高以下方面的软件质量:可复用性、可维护性、可扩展性等;(2)节省开发时间。
区别软件框架
(1)框架是一组软件组件,它们互相协作提供了针对某个给定的问题领域中的应用程序所用到的一种可复用的体系结构。它的根本目标是:(2)用来帮助提高以下方面的软件质量:可复用性、可维护性、可扩展性等;(3)节省开发时间
小结
也就是说,模式本质上是逻辑概念,模式描述通常是独立于编程语言或具体实现的,本质上更为笼统,可在几乎任何应用程序中应用,一个模式本身并不是以软件组件的形式存在的,它需要在每次使用时被具体实现。模式提供了一种方式用来完成一个“良好的”设计,而且模式也可用来辅助设计框架
而框架本质上更为具体可见,它们作为软件的形式而存在于是作为一种软件的形式而存在,框架是针对具体实现的。框架提供的是与特定领域相关的功能,本身并不是完整的应用程序,然而完整的应用程序可以通过直接继承/引用这些组件来构建设计模式可在一个框架的设计和实现过程中运用,或者说框架是一些设计模式的典型体现
根据各位大牛总结,设计模式大致有如下六大原则,后面将一一讲解,并细说42个设计模式。
(1)单一职责原则
(2)里氏替换原则
(3)依赖倒置原则
(4)接口隔离原则
(5)迪米特法则
(6)开闭原则
其中,42个设计模式包括了GoF(“四人帮”,指Gamma, Helm, Johnson & Vlissides, Addison-Wesley四人)提出的23种设计模式,这23个模式被广泛地应用在日常的开发中。这42个模式分为6类:
画的有点丑,但应该没有疏漏的地方