面向对象的七个设计原则
时间: 2024-06-18 17:03:28 浏览: 16
面向对象编程中的七个设计原则是:
1. 单一职责原则(SRP):一个类应该只有一个引起它变化的原因,即一个类只负责一项职责。
2. 开放封闭原则(OCP):软件实体应该是可扩展的,但是不可修改的。即当需求改变时,可以扩展新的内容,但不应修改原有代码。
3. 里氏替换原则(LSP):子类对象必须能够替换其父类对象而不影响程序正确性。即使用子类对象时,不需要知道它是子类对象,还是父类对象。
4. 接口隔离原则(ISP):客户端不应该依赖于它不需要的接口。即一个类对另一个类的依赖应该建立在最小的接口上。
5. 依赖倒置原则(DIP):高层模块不应该依赖于低层模块,它们都应该依赖于抽象。即应该通过抽象来实现模块间的松耦合。
6. 迪米特法则(LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。即一个对象应该尽可能少地与其他对象发生相互作用,使系统功能模块相对独立。
7. 合成复用原则(CRP):尽量使用对象组合,而不是继承来达到复用的目的。即尽量使用对象聚合,而不是类继承。
相关问题
面向对象八大设计原则
面向对象八大设计原则是一组指导面向对象软件设计的原则,也被称为SOLID原则。这些原则旨在提高软件的可维护性、可扩展性和可重用性。下面是对这八大设计原则的介绍:
1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因。换句话说,一个类应该只有一个职责。
2. 开放封闭原则(Open-Closed Principle,OCP):软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着在不修改现有代码的情况下,可以通过添加新的代码来扩展功能。
3. 里氏替换原则(Liskov Substitution Principle,LSP):子类型必须能够替换掉它们的父类型。也就是说,如果一个类是父类的子类,那么它可以在任何使用父类的地方替代父类而不会引发错误。
4. 接口隔离原则(Interface Segregation Principle,ISP):客户端不应该依赖它不需要的接口。一个类不应该强迫它的客户端依赖于它们不使用的方法。
5. 依赖倒置原则(Dependency Inversion Principle,DIP):高层模块不应该依赖于低层模块,它们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
6. 迪米特法则(Law of Demeter,LoD):一个对象应该对其他对象有尽可能少的了解。一个类应该只与它的直接朋友进行通信,而不是与陌生的类进行通信。
7. 合成复用原则(Composite Reuse Principle,CRP):尽量使用对象组合而不是继承来达到复用的目的。通过将对象组合在一起,可以灵活地增加新的行为,而不需要修改现有的代码。
8. 优先使用组合而不是继承原则(Prefer Composition Over Inheritance):在设计时,应优先考虑使用对象组合来实现代码的复用和扩展性,而不是过度使用继承。
面向对象7大设计原则之间的关系
面向对象7大设计原则是相互关联的,它们共同构成了一个完整的设计思想体系。其中的关系如下:
1. 单一职责原则(SRP):一个类或者模块只负责一种职责,避免出现“大而全”的类或模块。
2. 开放封闭原则(OCP):软件实体应该对扩展开放,对修改关闭,通过抽象化和多态的方式实现。
3. 里氏替换原则(LSP):子类可以完全替换父类,且程序不会出错,也就是说,子类必须遵循父类的约定。
4. 依赖倒置原则(DIP):高层模块不应该依赖底层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。
5. 接口隔离原则(ISP):应该将不同的功能分离成不同的接口,避免一个接口承担过多的职责,导致接口臃肿。
6. 迪米特法则(LKP):一个对象应该对其他对象有尽可能少的了解,即最小化对象之间的交互,减少耦合。
7. 合成复用原则(CRP):尽量使用对象组合,而不是继承来达到复用的目的,避免类之间的紧耦合关系。
这7个原则有些是依赖于其他原则的,有些又可以作为其他原则的基础。综合运用这些原则可以帮助我们设计出高内聚、低耦合、易扩展、易维护的软件系统。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)