当前位置: 首页 > news >正文

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

目录

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.lryc.cn/news/463636.html

相关文章:

  • CSS 容器查询一探究竟
  • AI论文写作:如何轻松实现高原创度大揭秘
  • AtCoder Beginner Contest 375 A-E 题解
  • 其他-自己手动更换汽车电磁进排气阀0.9.2
  • 生成模型初认识
  • Java中的一些名词概念
  • 沈阳乐晟睿浩科技有限公司:引领抖音小店迈向新纪元
  • [图形学]蒙特卡洛积分方法介绍及其方差计算
  • 智慧社区Web解决方案:Spring Boot框架探索
  • 基于预测算法的航班离港延误系统
  • 【汇编语言】寄存器(内存访问)(七)—— CPU提供的栈机制
  • webAPI中的节点操作、高级事件
  • C++内存对齐机制简介
  • java集合进阶篇-《List集合》
  • FPGA图像处理之均值滤波
  • 高等数学 6.2 定积分在几何学上的应用
  • 缓存常见问题:缓存穿透、雪崩、击穿及解决方案分析
  • C++:拷贝构造
  • BGP(边界网关协议)
  • Spring 概念汇总
  • 快速在找到函数的实体的方法
  • 05 django管理系统 - 部门管理 - 修改部门
  • C++初阶——入门
  • Java基于SSM微信小程序物流仓库管理系统设计与实现(源码+lw+数据库+讲解等)
  • 82.【C语言】数据结构之顺序表的初始化和销毁
  • java-推荐一个控制台输出颜色ANSI字符的类
  • 关于定义结构体别名时 是否加*
  • 成语积累学习
  • 基于Java的茶叶商城设计与实现(源码+定制+开发)茶叶电商系统开发、茶叶电商平台开发、茶叶在线销售平台设计与开发
  • 桥接、NAT和仅主机三种网络模式对虚拟机IP地址分配的影响