架构设计原则与风格
SOLID原则与设计规范
SOLID原则是用来指导软件设计的,分别是:
- 单一职责原则(SRP)
- 开闭原则(OCP)
- 里氏替换原则(LSP)
- 接口隔离原则(ISP)
- 依赖倒置原则(DIP)
单一职责原则
单一职责原则:应该有且仅有一个原因引起类的变更。简单地说:接口职责应该单一,不要承担过多的职责
。
单一职责适用于接口、类,同时也适用于方法。例如我们需要修改用户密码,有两种方式可以实现,一种是用「修改用户信息接口」实现修改密码,一种是新起一个接口来实现修改密码功能。在单一职责原则的指导下,一个方法只承担一个职能,所以我们应该新起一个接口来实现修改密码的功能。
开闭原则
开闭原则:一个软件实体,如类、模块和函数应该对外扩展开放,对修改关闭。简单地说:就是当别人要修改软件功能的时候,使得他不能修改我们原有代码,只能新增代码实现软件功能修改的目的
。
举例:
public interface PeelOff {void peelOff();
}public class ApplePeelOff implement PeelOff{void peelOff(){//deal with apple}
}public class BananaPeelOff implement PeelOff{void peelOff(){//deal with banan}
}.....public static void main(){String type = "apple";PeelOff peelOff = PeelOffFactory.getPeelOff(type); //get ApplePeelOff Class Instance.peelOff.pealOff();
}
因为当需要对西瓜剥皮的时候,他会发现他只能新增一个类实现 PeelOff 接口,而无法再原来的代码上修改。这样就实现了「对拓展开放,对修改封闭」的原则。
里氏替换原则
里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象。简单地说:所有父类能出现的地方,子类就可以出现,并且替换了也不会出现任何错误
。 例如下面 Parent 类出现的地方,可以替换成 Son 类,其中 Son 是 Parent 的子类。
Parent obj = new Son();
等价于
Son son = new Son();
这样的例子在 Java 语言中是非常常见的,但其核心要点是:替换了也不会出现任何的错误。**这就要求子类的所有相同方法,都必须遵循父类的约定,否则当父类替换为子类时就会出错。**举个例子:
public class Parent<