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

目录

1.开放封闭原则(OCP)

2.单一职责原则(SRP)

3.依赖倒置原则(DIP)

4.里氏替换原则(LSP)

5.接口隔离原则(ISP)

6.合成复用原则(CRP)

7.迪米特法则(LOD)


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

1.开放封闭原则(OCP)

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

cs 复制代码
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)使用组合而非继承原则。即使用对象组合而不是类继承来实现代码复用。

cs 复制代码
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)指出一个对象应该对其他对象有尽可能少的了解,即只与直接的朋友通信,不和陌生人说话。

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

相关推荐
2601_966949659 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
晨曦中的暮雨11 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
喵了几个咪12 小时前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
开发语言·后端·golang
程序员清风12 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
淡海水13 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
2601_9628857214 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
Wang's Blog14 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
下一站春风里15 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
吴可可12315 小时前
C#调用摄像头拍照的三种API方案
c#
天外飞雨道沧桑16 小时前
我在浏览器里练了一个 792 参数的大模型,它学会了补全 JavaScript
开发语言·javascript·ai·ecmascript·ai编程