设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。
1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。
这 23 种设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解。
当然,软件设计模式只是一个引导,在实际的软件开发中,必须根据具体的需求来选择:
▪ 对于简单的程序,可能写一个简单的算法要比引入某种设计模式更加容易;
▪ 但是对于大型项目开发或者框架设计,用设计模式来组织代码显然更好。
本教程虽然命名为“Java设计模式”,但是设计模式并不是 Java 的专利,它同样适用于 C++、C#、JavaScript 等其它面向对象的编程语言。
Java 是典型的面向对象的编程语言,所以本教程以 Java 为基础来讲解这 23 种设计模式,如果你不了解 Java,请猛击《Java教程》学习。
手册简介
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
无论您是新手,还是老手,本教程都值得一读。对于那些具有丰富的开发经验的开发人员,学习设计模式有助于了解在软件开发过程中所面临的问题的最佳解决方案;对于那些经验不足的开发人员,学习设计模式有助于通过一种简单快捷的方式来学习软件设计
设计模式在软件开发中有两个主要用途。
设计模式提供了标准术语,并且特定于应用折场景。 例如,单例设计模式表示使用单个对象,所以熟悉单一设计模式的所有开发人员都将使用单个对象,并且他们可以告诉对方程序正在遵循单例模式。
设计模式已经经过一段很长的时间发展,它们为软件开发过程中面临的某些问题提供了最佳解决方案。 学习这些模式有助于无经验的开发人员以一种简单快捷的方式学习软件设计。
根据设计模式参考《设计模式 - 可重用的面向对象软件元素》一书中所述,一共有23种设计模式可以分为三类:创造模式,结构模式和行为模式。在这里我们还将讨论另一类设计模式:J2EE设计模式。
编号 |
模式与说明 |
---|---|
1 |
创造模式:这些设计模式提供了一种创建对象而隐藏创建逻辑的方法,而不是直接使用 new 操作符来实例化对象。 这使程序在决定对于给定的用例需要创建哪些对象时具有更大的灵活性。 |
2 | 结构模式:这些设计模式涉及类和对象组成。 继承概念用于组成接口并定义方法组合对象以获得新功能。 |
3 | 行为模式:这些设计模式是特别侧重于对象之间的通信。 |
4 | J2EE模式:这些设计模式特别涉及表示层。 这些模式由Sun Java Center标识。 |
另外,设计模式是与编程语言无关的,它是用于解决常见的面向对象的设计问题。
设计模式代表一个想法,而不是一个实现。
通过使用设计模式,可以使我们的代码更灵活,可重用和可维护。
Java本身内部遵循设计模式。
在核心java中,主要有三种类型的设计模式,它们可进一步分为以下子部分:
① 工厂模式
② 抽象工厂模
③ 式单例模式
④ 原型模式
⑤ Builder模式
① 适配器(Adapter)模式
② 桥接(Bridge)模式
③ 组合模式
④ 装饰者(Decorator)模式
⑤ 外观(Facade)模式
⑥ 享元(Flyweight)模式
⑦ 代理(Proxy)模式
① 责任链模式
② 命令模式
③ 解释器模式
④ 迭代器模式
⑤ 调解者(Mediator)模式
⑥ 备忘录模式
⑦ 观察者模式
⑧ 状态模式
⑨ 策略模式
⑩ 模板模式
⑪ 访问者模式