我有一个名为MyClass1的类。我使用MyClassFactory1.CreateMyClass()来获取MyClass1的对象。
MyClass1 test = MyClassFactory1.CreateMyClass()
这很有效。现在我需要更改代码,因为我想添加一些功能。 我想复制类MyClass1以创建一个名为MyClass2的新类。所以MyClass2应该包含相同的方法,依此类推,但我想改变MyClass2中几个方法的内容。
例如:
public class MyClass1
{
public void SomeMethod()
{
a = 5;
}
}
public class MyClass2
{
public void SomeMethod()
{
a = 5;
CallAnotherFunctionSomeWhereElse();
}
}
目标是创建MyClass1或MyClass2的实例,但输出必须是MyClass1,因为它在代码中的许多其他位置使用。测试需要表现得像MyClass1。
if(true)
MyClass1 test = MyClassFactory1.CreateMyClass();
else if(false)
MyClass1 test = MyClassFactory2.CreateMyClass();
CallSomeFunctions(test);
无法更改CallSomeFunctions(MyClass1 input){}方法。
从MyClass1派生MyClass2会有帮助吗?我想不是因为我无法使用改变后的功能吗? 如果我使用界面会有帮助吗?我想到了这样的事情:
IMyClass1
{
void SomeMethod();
}
public class MyClass2 : IMyClass1
public void SomeMethod()
{
a = 5;
CallAnotherFunctionSomeWhereElse();
}
最好的办法是什么?
答案 0 :(得分:2)
使用继承+虚拟方法或接口。或两者兼而有之。这是所有基本的OOP,我建议你阅读一些教程或购买一本好的入门书。
答案 1 :(得分:0)
我建议您声明一个父类,其中CallAnotherFunctionSomeWhereElse()是一个抽象类。
此类派生MyClass1和MyClass2
下一步是将CreateMethod声明为通用的。所以:
class abstract MyParentClass<T> {
protected void Initialize(); // custom code here
public static CreateMethod<T>() {
T t=new T();
t.Initialize();
return t;
}
}
Initialize是一个初始化方法,用于设置和调用所需的任何代码
}