JAVA设计模式之六大原则
程序员文章站
2022-06-22 20:12:29
参考资料:https://www.cnblogs.com/pony1223/p/7594803.html主要是对上面参考资料的总结和整理1.单一职责:一个类只负责一项职责。class Terrestrial{ public void breathe(String animal){ System.out.println(animal+"呼吸空气"); }}class Aquatic{ public void breathe(String animal){...
1.单一职责:
一个类只负责一项职责。
class Terrestrial{ public void breathe(String animal){ System.out.println(animal+"呼吸空气"); } } class Aquatic{ public void breathe(String animal){ System.out.println(animal+"呼吸水"); } } public class Client{ public static void main(String[] args){ Terrestrial terrestrial = new Terrestrial(); terrestrial.breathe("牛"); terrestrial.breathe("羊"); terrestrial.breathe("猪"); Aquatic aquatic = new Aquatic(); aquatic.breathe("鱼"); } }
2.里氏替换原则:
子类可以扩展父类的功能,但不能改变父类原有的功能。
引申含义
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。【注意区分重载和重写】
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
风险:如果不遵守 可能会在某些情况下忘记了子类覆盖了父类 但仍调用那个覆盖了的方法,导致程序出错
PS:可以用final的手段强制来遵循
可以阅读这里:https://blog.csdn.net/whuslei/article/details/636618了解详细情况
3.依赖倒置原则:
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
简单来说:依赖倒置原则的核心思想是面向接口编程
风险:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。
解决办法:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。
4.接口隔离原则:
将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。
根据原则修改后
5.迪米特法则
一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
6.开闭原则
对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,需要面向接口编程。
本文地址:https://blog.csdn.net/qq_34182649/article/details/107881628
上一篇: UPDATE注射的两个基本模式