【设计模式】什么是设计模式及如何学设计模式

设计模式系列说明

      很久没有更新博客了,一直想写一些什么,但是无从写起。今天和媳妇收拾房子,无意翻出了5年前买的一本书《C#设计模式》,就萌生了温习一遍这本书的想法,顺便更新到博客上,一是做个笔记,二是也可以分享下通过这本书的收获。

     设计模式系列博客主要参考《C#设计模式》这本书,博客里面会引用较多的原文,一是原文更严谨些,二是我也是懒,实在自己归纳不出什么东东来;里面涉及到的代码示例,我会尽量用PHP来写,一是因为工作上实在没用上C#了,二是通过另一种语言来写,或许会学的更透彻些。好了,废话不多,下面进入正题。

image

设计模式定义

    设计模式的定义早已经形成,并且已经作为文献传播开来:

  • 设计模式是针对反复遇到的设计问题的解决方案。
  • 设计模式由一组描述如何完成软件开发领域中的某些特定任务的规则构成。
  • 设计模式更侧重于经常性的架构设计主题的重用,而框架则关注细节的设计和实现。
  • 设计模式处理某个重复出现于特定设计方案中的设计问题,并为该问题提供一个解决方案。
  • 设计模式明确并指定了位于单个类和实例层面之上或者位于组件层面之上的抽象。(模式明确并指定了一个抽象,这个抽象位于类、实例、组件层面之上)

设计模式的三种类型

  • 创建型模式,为你创建对象而不是让你直接实例化对象,这种做法赋予程序更多的灵活性。(比如工厂模式就是创建型模式)
  • 结构型模式,有助于把多组对象组合成一个更大的结构,例如复杂的用户界面或者是会计数据等。(比如装饰模式,适配器模式)
  • 行为型模式,帮助定义系统中对象之间的通信,以及确定复杂程序中流程的控制方式。(比如常用的观察者模式)
  • 学习进程

  • 接纳,首先接纳设计模式在工作中占有很重要的地位。
  • 认可,然后意识到需要阅读有关的设计模式文献,这样能够知道在何时可以用到它们。
  • 内在化,在对设计模式由了足够了解后,它们就已经成了我们编程思想的一部分了。

总结

  使用设计模式的根本原因是为了保持类的分离,避免相互之间有过多的了解,同时,也避免了重新发明轮子,并且能够使用易于理解的术语来简洁地描述编程的方法。

最后两点面向对象编程的建议:

  1. 针对接口编程而非针对实现编程。
  2. 优先使用组合而非继承。