如何用C#实现开闭原则?

2023年 8月 29日 72.9k 0

如何用C#实现开闭原则?

像类、模块和函数这样的软件实体应该对扩展开放,但对修改关闭。

定义 - 开放关闭原则指出代码的设计和编写应该以这样的方式完成:在现有代码中进行最少的更改来添加新功能。设计的方式应该允许添加新功能作为新类,并尽可能保持现有代码不变。

示例

打开关闭之前的代码原理

using System;
using System.Net.Mail;
namespace SolidPrinciples.Open.Closed.Principle.Before{
public class Rectangle{
public int Width { get; set; }
public int Height { get; set; }
}
public class CombinedAreaCalculator{
public double Area (object[] shapes){
double area = 0;
foreach (var shape in shapes){
if(shape is Rectangle){
Rectangle rectangle = (Rectangle)shape;
area += rectangle.Width * rectangle.Height;
}
}
return area;
}
}
public class Circle{
public double Radius { get; set; }
}
public class CombinedAreaCalculatorChange{
public double Area(object[] shapes){
double area = 0;
foreach (var shape in shapes){
if (shape is Rectangle){
Rectangle rectangle = (Rectangle)shape;
area += rectangle.Width * rectangle.Height;
}
if (shape is Circle){
Circle circle = (Circle)shape;
area += (circle.Radius * circle.Radius) * Math.PI;
}
}
return area;
}
}
}

登录后复制

OpenClosed原则之后的代码

namespace SolidPrinciples.Open.Closed.Principle.After{
public abstract class Shape{
public abstract double Area();
}
public class Rectangle: Shape{
public int Width { get; set; }
public int Height { get; set; }
public override double Area(){
return Width * Height;
}
}
public class Circle : Shape{
public double Radius { get; set; }
public override double Area(){
return Radius * Radius * Math.PI;
}
}
public class CombinedAreaCalculator{
public double Area (Shape[] shapes){
double area = 0;
foreach (var shape in shapes){
area += shape.Area();
}
return area;
}
}
}

登录后复制

以上就是如何用C#实现开闭原则?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论