我有多个类,它们对不同的命名方法有类似的实现:
class MyClassX
{
public int MyClassXIntMethod(){}
public string MyClassXStringMethod(){}
}
class MyClassY
{
public int MyClassYIntMethod(){}
public string MyClassYStringMethod(){}
}
Run Code Online (Sandbox Code Playgroud)
类中的方法具有类似的实现,但由于方法的名称不同(由于第三方约束),我不能使用继承.
我正在寻找一种优雅的解决方案,它比一遍又一遍地实现相同的功能更好.
经典答案恕我直言,每个第三方主叫方使用adpater模式.不要盲目申请,但先看看它是否合适.
class MyClassXAdapter
{
IMyInterface _myImpClass
public int MyClassXIntMethod(){ return _myImpClass.IntMethod()}
public string MyClassXStringMethod(){ return _myImpClass.StringMethod() }
}
class MyClassYAdapter
{
IMyInterface _myImpClass
public int MyClassYIntMethod(){ return _myImpClass.IntMethod()}
public string MyClassYStringMethod(){ _myImpClass.StringMethod() }
}
class MyClassImplementation :IMyInterface
{
public int IntMethod(){}
public string StringMethod(){}
}
Run Code Online (Sandbox Code Playgroud)