在软件设计中,特别是OOP的类设计中,有六大原则:
●开闭原则(Open-Closed Principle)
●依赖倒置原则(Dependence Inversion Principle)
●接口隔离原则(Interface Segregation Principle)
●里氏代换原则(Liskov Substitution Principle)
●迪米特原则(Law of Demeter)
●合成复用原则(Composite/Aggregate Reuse Principle)
●单一职责原则(Single-Responsibility Principle)
开闭原则
开闭原则中国的“开(Open)”是对功能开发即扩展,而“闭(Closed)”失败源代码的修改关闭,即不允许修改源代码而对扩展功能。装饰模式就是符合该原则的开发模式。
那么如何在设计中实现“开-闭”原则呢?解决问题关键在于抽象化,抽象化是面向对象设计的第一个核心本质。对一个事物抽象化,实质上是在概括归纳总结它的本质,抽象让我们抓住最最重要的东西,从更高一层去思考。在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需更改,从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。
依赖倒置原则
“依赖倒置”就是要依赖于抽象,不要依赖于具体。抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。
那么怎么才能做到“依赖倒置”呢?不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到:
1)、任何变量都不应该持有一个指向具体类的指针或者引用;
2)、任何类都不应该从具体类派生;
3)、任何方法都不应该覆写它的任何基类中的已经实现的方法。
接口隔离原则
“接口隔离”是说使用多个专一功能的接口比使用一个的总接口总要好,一个类对另外一个类的依赖性应当是建立在最小接口上的。
里氏代换原则
“里氏代换”是说子类型必须能够替换它们的基类型,一个软件实体如果使用的是一个基类,那么当把这个基类替换成继承该基类的子类,程序的行为不会发生任何变化。软件实体察觉不出基类对象和子类对象的区别。可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。
迪米特原则
迪米特原则即迪米特法则,这是要求类之间交互时应该暴露给外部最少的信息。
迪米特法则的主要用意是控制信息的过载,在将其运用到系统设计中应注意以下几点:
1) 在类的划分上,应当创建有弱耦合的类。类之间的耦合越弱,就越有利于复用。
2) 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当
public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性。
3) 在类的设计上,只要有可能,一个类应当设计成不变类。
4) 在对其它对象的引用上,一个类对其它对象的引用应该降到最低。
合成复用原则
“合成复用”就是要尽量使用合成/聚合,尽量不要使用继承。
如果新对象的某些功能在别的已经创建好的对象里面已经实现,那么尽量使用别的对象提供的功能,使之成为新对象的一部分,而不要自己再重新创建。
单一职责原则
就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。
分享到:
相关推荐
面向对象程序设计(Object-Oriented Programming,简称OOP)是一种广泛应用的编程范式,它以对象为中心,通过封装、继承和多态等核心概念来组织代码。在浙江大学的OOP考试中,考生通常需要对这些核心概念有深入理解...
面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它基于“对象”的概念,通过封装、继承和多态等机制来组织代码。在OOP中,有四个基本原则,它们是设计高质量、可维护软件的基石。这四...
总的来说,OOP通过面向对象的设计思路,使代码结构清晰,易于理解和维护,同时提供了丰富的设计模式,使得复杂系统的构建更加高效。在Java、C++、Python等语言中,OOP被广泛应用,是软件开发中的基础技能。通过深入...
在面向对象设计中,继承有助于实现代码的模块化和层次化。 3. 多态:多态是指同一消息可以被不同类型的对象响应,实现方式有方法重载(Overloading)和方法重写(Overriding)。它允许我们在不考虑对象具体类型的...
面向对象程序设计(Object-Oriented Programming,OOP)是一种编程范式,旨在提供一种更加模块化、可重用和易于维护的代码编写方式。它基于“对象”的概念,对象是现实世界问题的抽象,包含了数据(属性)和操作这些...
面向对象编程(Object-Oriented Programming,简称OOP)是Java语言的核心概念,它是一种将现实世界中的事物抽象为程序中的对象的编程范式。在Java OOP中,我们通过类(Class)来定义对象(Object)的结构和行为,...
比如文档中的《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案,Java OOP阶段小测试等,这些资料包含了各种类型的题目,涵盖了OOP的基本概念、类与对象的创建、继承与多态的应用、接口的使用等。...
这些原则是非常基础而且重要的面向对象设计原则,理解和融汇贯通这些原则需要不少的经验和知识的积累。 单一责任原则是指一个类应该只有一个理由去改变,也就是说让一个类只做一种类型责任,当这个类需要承当其他...
在面向对象设计中,子类应该能够替换其基类并且保持程序原有的行为不变。违反这一原则可能导致运行时错误或者异常行为,因为子类可能无法完全符合基类所规定的所有行为。 ### 依赖倒置原则(DIP) **定义**:高层...
Java OOP 面向对象基础代码实例,代码主要涉及分析类之间的关系、聚集和组合、依赖与继承、有理数类Rational、类的设计原则、内聚性、实例Instance和静态修饰符Static、用顺序图和状态图模拟动态行为、使用Java API...
9. **OO设计**:这部分内容可能涵盖了面向对象设计的整体流程,包括分析结果的转化、类的设计原则、接口设计等。 通过这些课件,学习者可以深入了解面向对象分析与设计的全貌,掌握从需求分析到系统实现的关键步骤...
介绍面向对象(OOP)的六大基本设计原则,使用markdown格式编写,使用浏览器即可查看! 让我们一起new一个对象吧~O(∩_∩)O
C++是一种强大的、通用的编程语言,以其支持面向对象编程(OOP)而闻名。面向对象编程是一种设计和实现软件的方式,它强调将现实世界的问题和解决方案映射到计算机程序中的对象。本资料包“C++面向对象程序设计 经典...
C++ 面向对象设计五大原则是面向对象编程(OOP)中一个非常重要的概念,它们是单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。这五大原则是面向对象设计的基础,遵循这五大原则可以使我们...
面向对象设计模式(OOP Design Patterns)是软件工程中用于解决常见设计问题的一种方案,目的是使软件更加可复用、灵活和易于维护。C#作为一门支持面向对象的编程语言,它天然地与设计模式紧密相连。设计模式的核心...
- 面向对象设计模式的介绍 - 面向对象分析与设计(OOA&D)的方法论 学习这份资料,你可以深入了解面向对象编程的思想,掌握如何在实际项目中运用这些概念,提高编程效率和代码质量。对于软件开发人员来说,理解和...
面向对象程序设计是计算机科学中的核心课程之一,尤其在软件工程领域中占据着重要的地位。...通过参与这个课程,学生不仅能够掌握JAVA编程,还能领略到面向对象设计的魅力,并在实践中不断提升自己。
6. **面向对象设计原则**:包括单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)等。这些原则指导我们编写出更灵活、可维护的代码。 通过学习这个系列...
面向对象设计原则包括SOLID原则,这些原则帮助设计出易于维护和扩展的代码。SOLID原则包含: - 单一职责原则(Single Responsibility Principle) - 开闭原则(Open/Closed Principle) - 里氏替换原则(Liskov ...