繁体   English   中英

具有更多参数的C#子类方法中的OOP设计

[英]OOP Design in C# subclass method with more parameters

假设我有这两个类:

public class Threshold {
    int min;
    int max;

    public virtual int calculate(int min, int max)
    {
        //calculate basic Threshold        
    }        
}


public class AdvancedThreshold : Threshold {
    int min;
    int max;
    int extra;

    public override int calculate(int min, int max, int extra)
    {
        //calculate Advanced Threshold        
    }
}

我不能这样做,因为基本方法有两个参数,而子类方法有三个参数。

解决该问题的最佳设计实践是什么? 有可能使用多态对象吗? 我需要使用复合对象而不是继承吗?

我在这里阅读了与我的问题类似的内容https://stackoverflow.com/a/56904/3032175

但是我不太了解解决方案。 谢谢。

当您从类继承时,您无法更改需要为方法提供实现的方法,但是您可以添加新方法。

有几种方法可以实现您想要的

您为该方法提供了两个重载

public virtual int calculate(int min, int max){}

public virtual int calculate(int min, int max,int extra){}

或者您可以在另一个方面实施

public override int calculate(int min, int max)
{
   calculate(min,max,extra)
}

public  int calculate(int min, int max, int extra){}

不确定要实现的目标,但您可能需要重新考虑设计。 似乎min/max/extra不应传递给Calculate方法,而应设置为属性或在构造函数中传递。

public class Threshold
{
    public int Min { get; set; }
    public int Max { get; set; }

    public virtual int Calculate( int input )
    {
        // logic goes here
    }
}

public class AdvancedThreshold : Threshold
{
    public int Extra { get; set; }

    public override int Calculate( int input )
    {
        // advanced logic goes here
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM