设计原则总结
小记:许多设计不用完全遵守原则,尽量去遵守就可以了
- 开闭原则Open -Closed Principle
一个软件的实体(比如:类)应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节,比如说一个商品的价格进行打折,可以再设置一个新的字段存储算法后的价格,而不能在原有的价格字段上进行改变!
优点:提高系统的可复用性和可维护性
- 依赖倒置原则Dependence Inversion Principle
细节应该依赖抽象,抽象不应该依赖细节具体,不要针对实现编程
比如不应该在应用层(高层)里面编写pojo(实体),面向的抽象编程
- 单一职责原则Simple Responsibility Principle
不要存在多于一个导致类变更的原因,一个类,接口,方法只负责一项职责
优点:降低复杂度,提高类的可读性…
- 接口隔离原则Interface Segregation Principle
用多个专门的接口,而不是单一的接口,不要简历庞大臃肿的解耦,尽量细化接口,接口中的方法尽量少。
优点:符合高内聚,低耦合的设计思想…就是不可以写万能方法(不符合接口隔离原则)这个与单一原则的区别是单一原则在前,隔离原则在后,单一原则关心的是new的实现,隔离原则关心的是new的落地。接口原则实现之前肯定需要先实现单一原则
- 迪米特原则Law oof demeter
又叫最少知道原则,尽量降低类与类之前的耦合(比如说要知道一个list的数量,传给接口的时候只传一个数量就可以了,没必要把list传给接口)
优点:减少耦合
- 里氏替换原则Lishov Substitution Principle
子类可以扩展父类的功能,不能改变父类原有的功能
比如在getset方法里面改变某一个方法的输入输出。
面向对象的基本原则是里氏替换原则
- 合成复用原则Composite&Aggregate ReusePrinciple
又叫合成(组合),聚合复用原则。尽量使用对象组合(contains-a)聚合(has-a),而不是继承关系达到软件复用的目的
优点:降低耦合