1 设计模式的七大原则
1.1 开闭原则
A: 定义:
开闭原则(Open Closed Principle,OCP)软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification),这就是开闭原则的经典定义。
开闭原则的目标是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。
B: 开闭原则的实现方法
可以通过“抽象约束、封装变化”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。
1.2 里氏替换原则
A: 定义
里氏替换原则(Liskov Substitution Principle,LSP)继承必须确保超类所拥有的性质在子类中仍然成立;
B: 实现
里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。
1.3 依赖倒转原则
A: 定义
依赖倒置原则(Dependence Inversion Principle,DIP)高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象;核心思想是:要面向接口编程,不要面向实现编程;
B: 实现
依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性,所以我们在实际编程中只要遵循以下4点,就能在项目中满足这个规则。
- 每个类尽量提供接口或抽象类,或者两者都具备。
- 变量的声明类型尽量是接口或者是抽象类。
- 任何类都不应该从具体类派生。
- 使用继承时尽量遵循里氏替换原则。
1.4 单一职责原则
A: 定义
单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分;
1.5 接口隔离原则(ISP)
接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口;要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
1.6 迪米特法则
A: 定义
迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。
B: 实现
从迪米特法则的定义和特点可知,它强调以下两点:
从依赖者的角度来说,只依赖应该依赖的对象。
从被依赖者的角度说,只暴露应该暴露的方法。
1.7 合成复用原则
合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
2 设计模式的应用场景
借贷平台的订单,有审核-发布-抢单等等,随着操作的不同,会改变订单的状态,项目中的这个模块实现就会使用到状态模式,这种请求可以使用状态模型。
网友评论