什么是设计模式?
我们知道对于很多数学问题,经常会有多种不同的解法
而且这其中可能会有一种比较通用简便高效的方法
我们在遇到类似的问题或者同一性质的问题时,也往往采用这一种通用的解法
将话题转移到程序设计中来
对于软件开发人员, 在软件开发过程中, 面临的一般问题的解决方案就是设计模式(准确的说是OOP中)
当然,如同数学的解题思路一样,设计模式并不是公式一样的存在
设计模式(Design pattern)代表了最佳的实践
是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的宝贵经验
是解决问题的思路
总之,设计模式是一种思想,思想,思想。
起源
随着面向对象编程语言的发展,以及软件开发规模的不断扩大
编写良好的OOP程序变得困难,而编写可复用的OOP程序则更是困难
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides
四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用面向对象软件的基础) 的书
该书首次提到了软件开发中设计模式的概念。
四位作者合称 GOF(四人帮,全拼 Gang of Four)
这就是设计模式四个字的起源
当然,即使在这本书出版之前,肯定也已经有很多有经验的OOP程序员已经在使用自己的经验(设计模式)了
但是这本书将OOP的设计经验作为设计模式记录下来
使我们能够更加简单方便的复用成功的设计经验和体系结构
设计原则
"随着面向对象编程语言的发展,以及软件开发规模的不断扩大
编写良好的OOP程序变得困难,而编写可复用的OOP程序则更是困难"
设计模式的起源, 正是需要设计模式的根本原因
借助于设计模式,可以更好地实现代码的复用,增加可维护性
怎么才能更好地实现代码复用呢?
面向对象有几个原则:
根本原则
| 开闭原则(Open Closed Principle,OCP) 一个软件实体应当对扩展开放,对修改关闭 。 即软件实体应尽量在不修改原有代码的情况下进行扩展 |
在开闭原则的定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类
不修改已有代码的基础上扩展系统的功能的形式,就是符合开闭原则的
开闭原则的关键是抽象
比如,一个方法中
if(){
//...
}else if(){
//...
