最佳实践,其中放置方法取决于2个不同的对象';s

本文关键字:对象 2个 取决于 方法 最佳 | 更新日期: 2023-09-27 18:01:04

我有两个类,每个类都有自己的方法。

我需要在需要这两种方法的值的地方进行计算。

在其他一些类中,我需要这个计算的值。

这个需要输入两个不同对象并且在其他几个类中都需要的方法应该放在哪里?

一个简化的例子:

public class One
 {
   public double item1 {get;set;}
   public double item2 {get;set;}
  public double MethodClassOne()
   {
     return
           item1 * item2;
    }
  }
public class Two
 {
   public double item1 {get;set;}
   public double item2 {get;set;}
  public double MethodClassTwo()
   {
     return
           item1 * item2;
    }
  }
public class C
 {
   public double item1 {get;set;}
   public double item2 {get;set;}
   public double item3 {get; private set;}
  public C(One one, Two two)
  {
    this.item3 =  MethodClassOneAndTwo(one, two);
  }
  public double MethodClassC()
   {
     return
           item1 + item2 + item3;
    }
  }
  Where do I put this method???
  MethodClassOneAndTwo(One one, Two two)
   {
        One.MethodOne() + two.MethodTwo();
   }

最佳实践,其中放置方法取决于2个不同的对象';s

这可能是个好主意;在一个新的类中,它引用了以前的两个类:

public class Three {
    public One One { get; set; }
    public Two Two { get; set; }
    public class Three(One one, Two two) {
        this.One = one;
        this.Two = two;
    }
    public double MethodClassForOne() {
        return (One.item1 * One.item2);
    }
    public double MethodClassForTwo() {
        return (Two.item1 * Two.item2);
    }
    public double MethodClassOneAndTwo()
    {
        return (MethodClassForOne() * MethodClassForTwo());
    }
}

EDIT:由于通知而返回,我注意到在您的C类中有item3 { get; private set; },但不能从构造函数中设置。。。item3将如何设置?

这实际上完全取决于您的设计,目前有点模糊,但我想说,如果您在类C中需要它,那么将该方法放入类C中。

再次,要注意设计细节。一个类应该只有一个改变的理由(即"单一责任主体"(。因此,如果C类不是真正的用途,那么将其放在某种类型的"类C辅助类"中。