学习来源:https://www.zhihu.com/question/29477933/answer/586378235
在 GoF 设计模式原书《《Design Patterns: Elements of Reusable Object-Oriented Software》第一章就已经说明了:
使用设计模式的必要性的程度是逐级递增的:应用程序(Application) < 工具包/类库(ToolKit/Library) < 框架(Framework)
设计模式对不同层级的程序重要性不一样
大部分程序员编写的程序可以分为三类(应用程序、工具包 、框架),使用设计模式的目的是提高代码的可复用性和可扩展性(灵活性), 但是设计模式在这三类软件中所发挥的效果是不一样的。
具体来说使用设计模式的必要性的程度是逐级递增的:应用程序(Application) < 工具包/类库(ToolKit/Library) < 框架(Framework)
- 应用程序
- 在编写应用程序的时候使用设计模式, 设计模式可以帮助的是内部重用,管理和扩展问题。或者使得一个应用减少对于平台的依赖。
- 工具包
- 工具包或库是依赖相互关联的可重用的类, 用来提供一些有用的且非常通用的功能, 例如集合类库(提供了集合类List, Stack, Set 等)。 这一类代码是为了帮助应用程序完成其功能而编写的, 所以非常强调代码复用。 因此, 工具包设计通常是要比应用程序的设计困难的, 毕竟, 作为工具包的设计者,要向千差万别的应用程序提供尽可能通用的功能, 因此, 在编写过程中, 工具包设计过程中要避免场景假设, 避免有可能会限制工具包灵活度的依赖。相较于应用程序, 在工具包/类库中有效地使用特定的设计模式,就成了一件几乎不可避免的事。
- 框架
- 框架和工具包很是类似, 都是一系列相互关联,重用性很高的类和功能的封装, 但是区别是框架的核心是提供一种针对特定类别软件来说可重用的设计。例如Java程序员所熟知的SSH框架宏观上来看, 就是提供了一种广泛应用于商业网站程序的MVC设计。 框架实际上阐释了你的应用程序的架构, 它会定义总体的结构,把不同的职责划分到不同的类和对象中。
- 当我们在使用框架的时候, 其实框架就已经帮我们预定义好了在该问题领域很多通用的设计决策。 所以框架的精髓是设计重用 而非 代码重用, 尽管框架中往往包含了很多可以复用的代码。
目前主要开发的都是应用程序,基本没有涉及到多人协作,软件项目也不太大,导致一直未用好设计模式,对程序的框架设计也是停留在简单的用法上,甚至很多时候到开发后期都不按照自己原先制定的规则走。
网友评论