C#基础-面向对象的七大设计原则

devtools/2024/10/18 19:22:29/

目录

1.开放封闭原则(OCP)

2.单一职责原则(SRP)

3.依赖倒置原则(DIP)

4.里氏替换原则(LSP)

5.接口隔离原则(ISP)

6.合成复用原则(CRP)

7.迪米特法则(LOD)


     今天来分享一下面向对象的七大原则,有关面向对象的基础概念,三大特性等可以参考【超详细】C#基础-面向对象

1.开放封闭原则(OCP)

       开放封闭原则(Open/Closed Principle, OCP)指出软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。即在不修改现有代码的情况下,可以通过扩展来增加新功能。

public abstract class Shape
{public abstract double Area();
}public class Rectangle : Shape
{public double Width { get; set; }public double Height { get; set; }public override double Area(){return Width * Height;}
}public class Circle : Shape
{public double Radius { get; set; }public override double Area(){return Math.PI * Radius * Radius;}
}

2.单一职责原则(SRP)

       单一职责原则(Single Responsibility Principle, SRP)指出一个类应该只有一个引起它变化的原因,即一个类应该只有一个职责

3.依赖倒置原则(DIP)

       依赖倒置原则(Dependency Inversion Principle, DIP)指出高层模块不应该依赖低层模块,两者都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。

4.里氏替换原则(LSP)

       里氏替换原则(Liskov Substitution Principle, LSP)指出子类应该能够替换其基类,并且不会影响程序的正确性。即子类应该能够完全替代父类而不引起任何问题

5.接口隔离原则(ISP)

       接口隔离原则(Interface Segregation Principle, ISP)指出客户端不应该依赖它不需要的接口。即接口应该尽可能小,只包含客户端需要的方法

6.合成复用原则(CRP)

       合成复用原则(Composition Over Inheritance)使用组合而非继承原则。即使用对象组合而不是类继承来实现代码复用

public class Engine
{public void Start(){Debug.Log("Engine starting");}
}public class Car
{private Engine engine;public Car(){engine = new Engine();}public void Start(){engine.Start();Debug.Log("Car starting");}
}

7.迪米特法则(LOD)

       迪米特原则(Law of Demeter, LOD)指出一个对象应该对其他对象有尽可能少的了解,即只与直接的朋友通信,不和陌生人说话

       好了,本次的分享到这里就结束啦,希望对你有所帮助~


http://www.ppmy.cn/devtools/126794.html

相关文章

Faceware + 虚幻引擎MetaHuman:打造超写实风格角色面部动画

在影视、游戏和虚拟现实的制作中,逼真的面部动画是增强角色表现力和提升观众沉浸感的关键。近年来,得益于面部捕捉技术和数字人创建工具的飞速进步,数字内容的创作达到了新的高度。Faceware面部捕捉系统和虚幻引擎(Unreal Engine&…

平台上新 | 智能分析——你的智能体调优工具已上线!

📢「智能分析」已全量上线 帮助开发者伙伴快速定位智能体可优化项,并提供优化建议,从而提升智能体质量与流量获取能力。 🎉「调优之星」优先推荐活动 功能尝鲜体验期,开发者对任一智能体完成任一“可优化项目”&…

C#数据类型与变量声明

在C#编程中,数据类型和变量声明是构建程序的基础。数据类型定义了变量可以存储的数据的类型和范围,而变量声明则是为这些数据类型分配内存空间的过程。 C# 数据类型 C# 中的数据类型可以分为以下几类: 值类型(Value Types&#…

Linux重点yum源配置

1.配置在线源 2.配置本地源 3.安装软件包 4.测试yum源配置 5.卸载软件包

自动驾驶系列—CI在自动驾驶开发中的应用场景与实现详解

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

项目管理软件真的能让敏捷开发变得更简单吗?

敏捷开发是一种以快速交付和适应变化为核心特点的软件开发方法。其特点包括尽早并持续交付、能够驾驭需求变化、版本周期内尽量不加任务、业务与开发协同工作、以人为核心、团队配置敏捷等。 例如,尽早并持续交付可使用的软件,使客户能够更早地体验产品…

Oracle实际需要用到但常常被忽略的函数

1、Oracle中nvl()与nvl2()函数 函数nvl(expression1,expression2)根据参数1是否为null返回参数1或参数2的值; 函数nvl2(expression1,expression2,expression3)根据参数1是否为null返回参数2或参数3的值 【函数格式】:nvl(expression1,expression2) 若…

NIPs 平台:Mint Blockchain 推动 NFT 创新的新平台

Mint Blockchain 正式宣布推出 NIPs 平台,这是一个开创性的开发者平台,旨在加速创新并简化 NFT 资产和应用的创建。通过提供对多种 NFT 标准的广泛支持以及一系列强大的工具,NIPs 平台让开发者、企业和个人可以轻松部署和扩展 NFT 项目。 Mi…