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

news/2024/10/19 13:33:50/

目录

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/news/1540262.html

相关文章

vue中加载GLB模型,计算模型的长宽高、绘制模型的边框线

项目环境版本 vue:2.6.12threejs: 0.169.0node: 16.20.0 需求背景 主页面点击预览按钮,默认显示弹框,并且加载GLB模型文件点击弹框中的功能按钮,计算GLB模型的长宽高点击弹框中的功能按钮,绘制GLB模型的边框线(长方…

LeetCode_2235. 两整数相加_java

1、问题 2235. 两整数相加https://leetcode.cn/problems/add-two-integers/ 给你两个整数 num1 和 num2,返回这两个整数的和。 示例 1: 输入:num1 12, num2 5 输出:17 解释:num1 是 12,num2 是 5 &am…

SpringTask的学习

cron表达式 cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发的时间,构成规则:分为6或7个 域,由空格分隔开,每个域代表一个含义每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选) cron表达式在线生成器: https://cron…

Matching——网络游戏大厅匹配设计

众所周知,网络游戏大厅匹配系统,一直是游戏很最重要的一环!在很多游戏中都是必不可少的的一环。比如,MOBA类 Dota,LOL,吃鸡 大地图这类,都少不了匹配,在服务器设计中也就成了很重要的…

2.计算机网络_IP地址

IPv4的IP地址 1、分类IP IP地址的表示方式: IP地址在整个互联网中是唯一的,指明了连接到某个网络上的一个主机。IP地址用32位二进制数表示,每一个字节代表一段,如下图IP地址即为128.11.3.31。 什么是多归属主机: 当…

重学SpringBoot3-集成Spring Security(一)

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Spring Security(一) 1. 简介与概念2. 基础配置2.1. 添加依赖2.1 基本认证与授权配置 3. 密码加密3.1. 如何加密用户密码3.2…

Git 可视化的实现:提升版本控制体验的利器

Git 是目前最流行的分布式版本控制系统,广泛应用于软件开发和项目管理中。然而,对于许多人来说,Git 命令行操作可能有些复杂且难以直观理解,特别是当涉及到复杂的分支和合并操作时。为了更好地帮助开发者掌握 Git 的操作过程&…

浅谈C#之抽象类、抽象方法

一、基本介绍 在C#中,抽象类和抽象方法是面向对象编程中的重要概念,它们提供了一种方式来定义一个类的基本框架,但不完全实现它。这允许其他类继承这个框架,并提供具体的实现细节。 二、基本用法 抽象类 抽象类是一个不能被实例…