设计模式-写在前面的话

设计模式简介

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、少写坑、让代码更容易地被他人理解、保证代码可靠性。毫无疑问,设计模式于己于人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石脉络,如同大厦的结构一样。
- 反复使用:设计模式被使用太多了,比如一些框架源码和自己的代码当中都可能出现了很多模式,如大名鼎鼎的Java框架spring里面记忆中比较深刻的有模板模式,代理模式,单例模式,工厂模式等等。
- 多数人知晓:这个应该写过程序的都知道。
- 分类编目:就是说可以找到一些特征去划分这些设计模式,从而进行分类。
- 代码设计经验:也就是说设计模式,是为了指导设计而从前人经验中总结出来的写代码的套路。

设计模式分类

总体可分为3大类总共23种
- 创建型模式:共5种
工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
- 结构型模式:共7种
适配器模式、装饰器模式、外观模式、桥接模式、组合模式、享元模式
- 行为型模式,共11种
策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
- 其实还有两类,即并发性模式和线程池模式。

为什么要学习设计模式?

  • 少写坑:比如前期一个很简单的功能,但是由于系统当初设计的时候没有考虑这些需求的变化,导致”牵一发动全身”,随便改动一处,系统都会产生不可预估的风险;或者系统出现越来越臃肿,后期根本没法儿维护了。
  • 阅读源码:这一点的话就体现在阅读源码上了。比如spring的源码如果你没点设计模式的底子话,他那一套又一套的套路会把人绕晕的(虽然套路深,但的确写得好,深谙设计模式之道)。

设计模式六个基本原则

  • 单一职责原则:
    意思是每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致。否则当你去维护这个系统的时候,你会后悔你当初的决定。(一个类只有一个引起变化的原因)
  • 里氏替换原则LSP:
    在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立。如果一个软件实体使用的是一个子类对象的话,那么它一定不能够使用基类对象。里氏代换原则的程序表现就是:在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类。
  • 接口隔离原则ISP:
    使用多个隔离的接口,比使用单个接口要好。强调的是一个接口拥有的行为应该尽可能的小。
  • 依赖倒置原则:
    要依赖抽象,不要依赖具体类。
  • 最少知识原则(迪米特法则):
    不要让太多的类耦合在一起,免得修改系统中的一部分,会影响到其他的部分,如果许多类之间相互依赖,这个系统会变成一个易碎的系统,增加维护成本,也因为复杂而不易被其他人理解。
  • 开发-关闭原则:
    类应该对扩展开发,对修改关闭。这样的设计具有弹性可以应对改变,可以很好的应对改变的需求;如果是一有新需求写好的模块代码不停的去修改它,可能会出很多意外和bug。
  • 虽然有这些设计模式和原则,但我们也要根据自己的需求来,不一定要完全遵循,即使是强大如spring框架也做不到。

你可能感兴趣的:(设计模式)