开闭原则(Open/Close Principle, OCP)
对扩展开启,对修改关闭。也就是是通过增加新代码和类来适应新的需求,而不是修改现有的代码。
思考
工作的时候,不是通过增加代码来适应新的需求,往往是通过修改,而且现在写代码没有考虑到复用和可扩展性,仅仅是逻辑的书写,没有考虑到设计原则与设计模式,感觉写代码写的有点笨。。。
例如:类似状态的枚举值的时候,判断不等于某个状态的时候执行的代码逻辑,有可能在增加状态之后与需求违背。
单一职责原则(Single Responsibility Principle, SRP)
一个类或者模块或者接口只专注于完成特定的功能与职责,以提高内聚性和松耦合。
思考
在有类似功能的模块时,其实可以多利用抽象类或者父类抽取公共的接口与方法。但是在考虑相同结构的表的做类似数据隔离的时候,感觉代码写得有点恶心,每个接口确实有特定的职责,但是代码冗余且不够优雅,还是得多练
里氏替换原则(Liskov Substituion Principle, LSP)
子类可以替换父类,且不会引起程序行为的变换。
思考
目前这种原则比较少使用到,感觉父类和抽象类用的不到位。
参考别的博主的博客:软件设计原则(该博主举例说明很详细)
主要是以下几点:
- 子类不能修改父类已经实现的方法。
- 子类应该尽量保留父类的行为,不应删除父类的方法。
- 子类可以增加自己特有的方法,但是不能通过修改父类的方法来完成它们。
- 当子类的方法不能满足父类的需求时,可以通过抛出异常或者返回错误信息等方式进行说明。
接口隔离原则(Interface Segregation Principle)
客户端不应该被迫依赖于它不使用的方法;一个类对另一个类的依赖应该建立在最小的接口上。
【设计模式】软件设计原则(接口隔离原则、迪米特法则、合成复用原则)
软件设计原则之 SOLID 原则
思考
感觉这个原则也用的比较少,可能是没用到实现多接口的方式。。。
依赖倒置原则 (Dependency Inversion Principle)
是程序要依赖于抽象接口,不要依赖于具体实现。
软件设计原则(一): 依赖倒置原则
思考
感觉很复杂,实际上service都是接口,service下的impl是具体的实现,偶尔直接调mapper的方法时,mapper也是接口,具体的实现是xml?
总结与碎碎念
感觉很多原则没有用上,,,可能是我还是太菜鸡了,继续摸索,沉淀+1