我已经实现了策略模式-是否有一种聪明的方法来处理下面的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创建另一个类,所以我想知道是否缺少某些东西。

最佳答案

我想到了两个简单的选项之一:


使Behavior3Behavior2继承。如果您可以建立明确的“ IS A”关系,或者如果Behavior2Behavior3的工作方式有关的情况发生变化,则此设计方法确实会在以后给您带来问题,我只会推荐这种方法。
Function2()移到Behavior2Behavior3可以独立使用的帮助器类中。

10-07 18:15