-1

我有一个场景如下:

    public class A : class B
    {
         public SomeMethodA()
         {
              //.... do some logics here
              SomeMethodB();
         }

         private SomeMethodB()
         {
              //.... do some logics here
         }

    }

class B : class C

class X : class Y
{
     public SomeMethodA()
     {
          //.... do some logics here
          SomeMethodB();
     }

     private SomeMethodB()
     {
          //.... do some logics here
     }
}

class Y : class Z

A 类具有与 X 类完全相同的方法。现在的问题是:我如何在集中式中组合这种方法,以便我的代码在不修改/触及 Y、Z 类和 B、C 类的情况下具有 DRY(不要重复自己)?B、C、Y 和 Z 类是我们的遗留代码,我们不会尝试更改/修改这些类。

有什么想法吗?

4

1 回答 1

3

由于您进行了编辑并使其更加清晰。我相信这会奏效。只需创建一个 X 和 A 将继承的公共类。

public abstract class Common
{
     public SomeMethodA()
     {
          //.... do some logics here
          SomeMethodB();
     }

     private SomeMethodB()
     {
          //.... do some logics here
     }
}

public class A : Common { /* some other methods */ }
public class B : A { /* some other methods */ } //B inherits A
public class C : B { /* some other methods */ } //C inherits B

public class X : Common { /* some other methods */ }
public class Y : X { /* some other methods */ } //Y inherits Z
public class Z : Y { /* some other methods */ } //Z inherits Y

第二次编辑:

public class Common
{
     public void SomeMethodA()
     {
          //.... do some logics here
          SomeMethodB();
     }

     private void SomeMethodB()
     {
          //.... do some logics here
     }
}

然后在 A 类和 X 类中,执行以下操作:

public void SomeMethod() {
    Common c = new Common();
    c.SomeMethodA();
}
于 2013-02-27T21:40:58.697 回答