Changhuan Huang的博客

谈谈设计模式

12 July 2016 设计模式 设计模式

1.前言

刚开始学Java这种面向对象的编程语言的时候,就开始看设计模式,感觉非常难以理解,所以就放下不看了。后来在做的项目多了,在项目源码中慢慢发现有些设计模式,发现设计模式真的是很有用的东西,使项目架构布局更加合理,容易理解,足够健壮,足够稳定,扩展也非常方便,利于代码的重用。作为小白的我,又开始回去研究设计模式了。这次重新学习,感觉非常的轻松,应该是使用java的时间长了,学习的知识多了,再看以前比较难以理解的东西,就不是那么难懂了。所以学习的路线,应该是先广,后深,对大局的有个了解,然后需要什么的时候再深入研究学习。

2.正文

2.1 23种设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。作为一名架构师,懂得如何在项目中灵活合理使用设计模式,是必备的技能之一。

GoF(Gang of Four,四人组),他们1995年出版的《设计模式》一书,第一次将设计模式提升到理论高度,并将之规范化。书中一共总结了23种基本的设计模式。而这23中设计模式几乎涵盖了面向对象设计过程中所有问题的解决方案。书中提到的23种设计模式分别是:

  • 单例模式 
  • 工厂方法模式 
  • 抽象工厂模式 
  • 模版方法模式 
  • 建造者模式 
  • 代理模式 
  • 原型模式 
  • 中介者模式 
  • 命令模式 
  • 责任链模式 
  • 装饰模式 
  • 策略模式 
  • 适配器模式 
  • 迭代器模式 
  • 组合模式 
  • 观察者模式 
  • 门面模式 
  • 备忘录模式 
  • 访问者模式 
  • 状态模式
  • 解释器模式 
  • 享元模式 
  • 桥梁模式

2.2 设计模式起源

设计模式的起源是面向对象程序设计思想,是面向对象设计的精髓——抽象。面向对象通过类和对象来实现抽象,实现时产生了面向对象的三个重要机制:封装、继承、多态。正是这三个机制衍生出了各种各样的设计模式。在面向对象软件设计的发展过程中,除了《设计模式》一书中提到的23中设计模式之外,新的设计模式仍然不断出现。

2.3 面向对象的软件设计原则

从面向过程到面向对象是软件设计诞生以来的迈出的最伟大的一步,面向对象程序设计成功解决了面向过程软件编程的低效率问题,并且彻底改变了人们的编程思维,为软件设计揭开了新的篇章。然而,要实现面向对象设计,彻底摆脱面向过程设计思维,并不仅仅是只要使用了一门面向对象的编程语言就能够达到的。使用面向对象设计,可以设计出优秀的软件,同样也可以设计出糟糕的软件。只有遵循一些特定的原则,才能设计出复用性高灵活性好的软件来。

在运用面向对象的思想进行软件设计时,需要遵循的原则一共有6个

  1. 单一职责原则(Single Responsibility Principle)
  2. 里氏替换原则(Liskov Substitution Principle)
  3. 依赖倒置原则(Dependence Inversion Principle)
  4. 接口隔离原则(Interface Segregation Principle)
  5. 迪米特法则(Law Of Demeter)
  6. 开闭原则(Open Close Principle)

在软件设计的过程中,只要我们尽量遵循以上六条设计原则,设计出来的软件一定会是一个优秀的软件,它必定足够健壮、足够稳定,并以极大的灵活性来迎接随时而来的需求变更等因素。

3.参考资料

1.设计模式