我已经实现了策略模式-是否有一种聪明的方法来处理下面的function2()和function1()的重复?
IBehaviour接口具有其他不共享功能的成员。
class Behaviour1: IBehaviour
{
public void DoSomething()
{
Function1();
}
//other functions of IBehaviour
}
class Behaviour2 : IBehaviour
{
public void DoSomething()
{
Function2();
Function1();
}
//other functions of IBehaviour
}
class Behaviour3 : IBehaviour
{
public void DoSomething()
{
Function2();
}
//other functions of IBehaviour
}
我已经有一堂课来处理这种行为。然后我意识到不同的情况需要不同的行为,因此在这个主类中,我在运行时创建了Behavior对象。我不愿意为Function1和Function2创建另一个类,所以我想知道是否缺少某些东西。
最佳答案
我想到了两个简单的选项之一:
使Behavior3
从Behavior2
继承。如果您可以建立明确的“ IS A”关系,或者如果Behavior2
与Behavior3
的工作方式有关的情况发生变化,则此设计方法确实会在以后给您带来问题,我只会推荐这种方法。
将Function2()
移到Behavior2
和Behavior3
可以独立使用的帮助器类中。