文章目录

一、单一职责原则: 一个类最好只做一件事
单一职责原则(Single Responsibility Principle,SRP)是面向对象设计中的一项基本原则之一。它强调一个类应该只负责一个明确的职责或功能。
具体来说,单一职责原则要求一个类应该专注于解决一个问题或实现一个功能,而不涉及其他无关的责任或功能。这意味着一个类应该有一个单一的关注点,只负责完成一个明确的任务。
单一职责原则的目的是提高代码的可读性、可维护性和可扩展性。通过将不同的职责分离到不同的类中,可以使每个类的代码更加清晰、简洁和易于理解。这样的设计使得类更加独立,可以更方便地进行修改、测试和重用。
单一职责原则还有助于降低系统的耦合性。当一个类只负责一个职责时,它与其他类之间的依赖关系更加清晰,类与类之间的耦合度降低。这样的设计使得系统更加灵活和可靠,当需求变化时,只需要修改与该职责相关的类,而不会影响其他无关的类。
总结来说,单一职责原则是指一个类应该只负责一个明确的职责或功能。它通过将不同的职责分离到不同的类中,提高了代码的可读性、可维护性和可扩展性,并降低了系统的耦合性。这是面向对象设计中的重要原则之一,对于构建高质量、可维护的软件系统非常重要。
二、开放封闭原则: 对扩展开放、对修改封闭
开放封闭原则(Open-Closed Principle,OCP)是面向对象设计中的一项基本原则之一。它强调软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。
具体来说,开放封闭原则要求在设计软件实体时,应该通过扩展现有的实体来实现新功能,而不是修改已有的代码。这意味着当需求发生变化时,应该通过新增代码来满足新需求,而不是直接修改已有的代码。
开放封闭原则的目的是提高代码的可维护性和可扩展性。通过遵循该原则,可以减少修改已有代码的风险,避免引入新的Bug,并降低对已有功能的影响。同时,通过扩展现有的代码,可以实现新功能,而不会对已有的代码进行破坏性的修改。
为了实现开放封闭原则,常用的方法是使用抽象和接口来定义可扩展的行为,并将具体的实现留给子类或实现类来完成。这样,在新增功能时,只需要实现新的子类或实现类,而不需要修改已有的抽象或接口。
开放封闭原则还有助于降低系统的耦合性。通过将变化的部分和稳定的部分分离,可以使系统的各个组件更加独立,降低组件之间的依赖关系。这样的设计使得系统更加灵活和可靠,当需求变化时,只需要新增新的组件,而不会影响已有的组件。
总结来说,开放封闭原则是指软件实体应该对扩展开放,对修改封闭。它通过扩展现有的代码来实现新功能,而不是直接修改已有的代码。遵循开放封闭原则可以提高代码的可维护性和可扩展性,降低系统的耦合性,是构建高质量、可维护的软件系统的重要原则之一。
三、里氏替换原则: 子类必须能够替换其基类
里氏替换原则(Liskov Substitution Principle,LSP)是面向对象设计中的一项基本原则之一。它是由计算机科学家Barbara Liskov提出的,并被广泛应用于面向对象编程和软件设计中。
里氏替换原则的核心思想是,任何基类的实例都可以在程序中被其子类的实例替换,而不会影响程序的正确性。换句话说,子类对象应该能够替换掉父类对象,并且程序的行为不会发生变化。
🎏里氏替换原则有以下几个要点:🎏
-
子类必须完全实现父类的抽象方法:子类在继承父类时,必须实现父类中所有的抽象方法,不能有任何缺失或修改。
-
子类可以有自己的特殊行为:子类可以在实现父类的抽象方法时,增加自己的特殊行为,但不能修改父类的实现逻辑。
-
子类的前置条件不能比父类更强:子类的方法的前置条件(接收的参数、调用的方法等)不能比父类更限制。
-
子类的后置条件不能比父类更弱:子类的方法的后置条件(返回值、抛出的异常等)不能比父类更宽松。
-
子类不能抛出比父类更多的异常:子类的方法不能抛出父类方法未声明的异常。
通过遵循里氏替换原则,可以保证代码的可靠性和可扩展性。通过将子类对象替换父类对象,可以增加代码的灵活性和可复用性。同时,里氏替换原则也有助于减少代码的耦合度,提高系统的可维护性和可测试性。
总结来说,里氏替换原则是指任何基类的实例都可以在程序中被其子类的实例替换,而不会影响程序的正确性。遵循里氏替换原则可以提高代码的可靠性、可扩展性和可维护性,是构建高质量、可维护的软件系统的重要原则之一。
四、依赖倒置原则: 程序要依赖于抽象接口,而不是具体的实现
依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计中的一项基本原则之一。它是由计算机科学家Robert C. Martin提出的,并被广泛应用于面向对象编程和软件设计中。
依赖倒置原则的核心思想是,高层模块不应该依赖于低层模块,它们应该通过抽象来互相依赖。换句话说,依赖关系应该通过接口或抽象类来建立,而不是通过具体的实现类。
🎯依赖倒置原则有以下几个要点:🎯
-
高层模块定义抽象接口或抽象类:高层模块应该定义一个抽象接口或抽象类,用于定义它所依赖的低层模块的行为。
-
低层模块实现抽象接口或抽象类:低层模块应该实现高层模块定义的抽象接口或抽象类,提供具体的实现。
-
高层模块通过抽象接口或抽象类依赖低层模块:高层模块应该通过抽象接口或抽象类来依赖低层模块,而不是直接依赖具体的实现类。
通过遵循依赖倒置原则,可以实现高内聚、低耦合的代码设计。高层模块不依赖于具体的低层模块,而是通过抽象接口或抽象类来依赖,从而提高代码的灵活性、可扩展性和可维护性。同时,依赖倒置原则也有助于实现代码的可测试性,可以更方便地进行单元测试和模块测试。
总结来说,依赖倒置原则是指高层模块不应该依赖于低层模块,它们应该通过抽象来互相依赖。遵循依赖倒置原则可以提高代码的灵活性、可扩展性、可维护性和可测试性,是构建高质量、可维护的软件系统的重要原则之一。
五、接口隔离原则: 将庞大的接口拆分成更小的、更具体的接口
接口隔离原则(Interface Segregation Principle,ISP)是面向对象设计中的一项基本原则之一。它强调客户端不应该依赖它不需要的接口。简而言之,接口隔离原则要求将庞大的接口拆分成更小的、更具体的接口,以避免接口过于臃肿和不必要的依赖关系。
🎃接口隔离原则有以下几个要点:🎃
-
接口应该尽可能小:接口应该只包含客户端需要的方法,不应该包含不相关或不必要的方法。一个接口应该具有单一责任,只负责一个特定的功能或行为。
-
客户端不应该依赖它不需要的接口:客户端应该只依赖它需要的接口,而不应该依赖它不需要的接口。这样可以避免客户端受到不必要的影响和依赖。
-
接口设计应该稳定:接口设计应该经过合理的考虑和分析,避免频繁变更和修改。稳定的接口可以提供稳定的依赖关系,减少对接口的依赖。
通过遵循接口隔离原则,可以实现高内聚、低耦合的代码设计。将庞大的接口拆分成更小的、更具体的接口,可以使接口的设计更加精确和可控。客户端只需要依赖它需要的接口,不会受到无关接口的干扰和影响。同时,接口设计的稳定性可以减少对接口的依赖,提高代码的可维护性和可扩展性。
总结来说,接口隔离原则是指接口应该尽可能小,客户端不应该依赖它不需要的接口。遵循接口隔离原则可以实现高内聚、低耦合的代码设计,提高代码的可维护性、可扩展性和可测试性。同时,稳定的接口设计也有助于减少对接口的依赖,提高代码的稳定性。