【发布时间】:2020-04-08 05:57:08
【问题描述】:
我正在使用 C# 中 SOLID 的开放封闭原则。我有抽象类 Shape 我想用它来计算不同形状的面积。如何调用 areaCalculator 类以及如何传递不同的形状。这是我的代码。
public abstract class Shape
{
public abstract double Area();
}
public class Rectangle : Shape
{
public double Height { get; set; }
public double Width { get; set; }
public override double Area()
{
return Height * Width;
}
}
public class AreaCalculator
{
public double TotalArea(Shape[] shapes)
{
double area = 0;
foreach (var objShapes in shapes)
{
area += objShapes.Area();
}
return area;
}
}
我想调用 areaCalculator 类来计算面积。
AreaCalculator _obj = new AreaCalculator();
Shape[] _shapes = new Shape[2];
var _result = _obj.TotalArea(_shapes);
Console.WriteLine(_result);
Console.ReadLine();
【问题讨论】:
-
是什么让您认为您的代码违反了 OCP?您的实际问题是什么?
-
我知道它不违反 OCP。但是我想调用areacalculator类怎么办呢?
-
你正在调用那个类,你有什么问题?
-
不知道怎么称呼。例如,我添加继承 Shape 的圆形类,然后计算哪个形状区域?
-
这个问题与OCP或SOLID完全无关,只是你没有创建任何对象。下次提问时请多加注意。
标签: c# solid-principles open-closed-principle