转眼间,2017年第一季度又要过完了。准备在第二季度过完之前,把23种设计模式都过一遍,并以博客的形式记录下来方便日后查看。
设计模式是什么?
在软件的开发过程中,最让开发人员头疼的是什么?毫无疑问当然是需求变更了,频繁变更需求的功劳当属产品经理了。在不能说服产品经理的情况下,我们只能从代码层面上入手了,思考该如何编可扩展性高的程序。幸运的是,设计模式能够很大程度上解决我们的问题。
设计模式是一套理论,由前人总结出的一套可以反复使用的经验,它可以提高代码的可重用性,增强系统的可维护型,以及解决一系列的复杂问题。设计模式给我们提供指导,以6大设计原则为理论基础,23种具体的设计模式可以作为我们实践参考。
设计模式的6大设计原则
单一职责原则
单一职责原则只要按照字面来理解,就是一个类只要负责某一职责即可。
里氏替换原则
所有引用父类的地方必须能透明的使用其子类的对象,学过面向对象的对这个应该都不陌生。
依赖倒置原则
抽象不应该依赖于细节,而细节的实现依赖于抽象。换而言之,要针对接口编程,不是针对实现编程。
接口隔离原则
使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口, 每个接口应该承担一个独立的角色。
迪米特法则
一个类应该尽可能的与其他类发生相互作用。迪米特法则可以降低系统的耦合度,使类与类之间保持松散的耦合关系。
开闭原则
一个类应该对扩展开放,对修改关闭。意思就是说在不修改源代码的情况下对类进行扩展
设计模式的分类
设计模式分为三种类型:创建型、结构型、行为型。
创建型:单例模式(Singleton)、简单工厂模式(Simple Factory)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)
结构型:适配器模式(Adapter)、组合模式(Composite)、装饰器模式(Decorator)、桥接模式(Bridge)、代理模式(Proxy)、享元模式(Flyweight)、外观模式(Facade)
行为型:命令模式(Command)、状态模式(State)、访问者模式(Visitor)、策略模式(Strategy)、备忘录模式(Memento)、迭代器模式(Iterator)、解释器模式(Interpreter)、职责链模式(Chain of Responsibility)、模板方法模式(Template Method)、观察者模式(Observer)