在C#中以正确的方式设计抽象类

时间:2014-11-28 07:44:29

标签: c# design-patterns

给定一个具有函数sumBill(int a,int b)的抽象类A.现在假设你有3或4个类扩展A类并实现它们的sumBill版本。在代码的各个位置,您使用整数参数调用sumBill。 后来确定参数需要是double类型而不是int类型。所以现在必须重构所有调用sumBill来传递double数据类型参数的地方。 所以问题是开发人员最初可以做些什么来避免这样的问题。 它是一个设计模式问题。如何在C#中实现它?

2 个答案:

答案 0 :(得分:2)

无。像这样的东西发生了。你尽可能好地收集需求,有时这还不够。

答案 1 :(得分:1)

这样的事情可能有用:

abstract class A{
    public abstract T sumBill<T>(T t1, T t2);
}

class B : A {
    public override T sumBill<T>(T t1, T t2) { /* your implementation of B here */ }   
}

这种“模式”称为泛型。看看here

然而,仅仅因为将来可能而使每个成员都具有通用性是过度的。你可能根本不需要它(YAGNI)。事实上,你无法预见那些案件。您可以根据某些要求实施软件,如果需求发生变化,您也可以更改软件。