定义
设计模式
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
模式
模式是指从生产经验和生活经验中经过抽象和升华提炼出来的核心知识体系。模式(Pattern)其实就是解决某一类问题的方法论。
使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
设计模式分类:创建型、结构型、行为型
创建型模式-研究高效的创建对象:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式
结构型模式-设计对象的结构和关系:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
行为型模式-设计对象的行为:模板方法模式,命令模式,迭代器模式,观察者模式(也叫发布订阅模式),中介者模式,备忘录模式,解释器模式,状态模式,策略模式,职责链模式,访问者模式
设计模式理论基础——六大原则
六大原则目的:减少耦合,增强复用性,降低代码的开发维护扩展成本。
耦合关系:是指某两个事物之间如果存在一种相互作用、相互影响的关系,那么这种关系就称‘耦合关系’。
耦合度和复杂度的危害:复杂度高,代码质量不高,可维护性差,复用性差,不易扩展。耦合度为0不可能 ,耦合度低合理,过高不容易维护且复用性和扩展性差。
六大原则定义
单一职责原则 single Responsibility principle:一个方法只做一件事情。比如请求数据的函数你就不要渲染数据了
开闭原则 OCP:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭;面向扩展开放,面向修改关闭,同时增强代码复用性。如 jquery extend
里氏代换原则 L Subsituation Principle: 任何基类可以出现的地方,子类一定可以出现。通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。一个父类可以访问的接口,父类忙着其他事情,子类可以代替父类去访问。
迪米特法则 (最小知道原则)LD:一个接口和一个方法,传入的参数越少越好。降低耦合度的同时也会让复杂程度降低。形成的关联越少越好、依赖最少。
依赖倒置原则 DIP:最常用的原则,依赖接口,不依赖方法,底层的东西不用了解,我们只需知道表现就可以,降低耦合度;前端应用中可以理解成多者之间依赖状态,而不依赖彼此。Js中没有接口的概念
接口分离原则 ISP:把大接口拆分小接口,不能一个接口全部实现增删改查
模式和原则的关系:原则是理论,模式是在理论上的具体方式
开发时使用原则的流程:优先降低复杂度,尽量降低耦合度
1.利用单一职责原则,开闭原则,里氏代换原则降低复杂度。
2.通过迪米特法则减少耦合度
3.通过依赖倒置原则消除可以没有的耦合