对于将对给定数据进行一些处理的类,是否更好地进行实例化或通过公共方法?

时间:2014-10-13 20:50:20

标签: oop architecture

我对OOP中的最佳做法有疑问。

假设我有一个班级负责接收一些输入并进行一些处理以使输出结果可用。

是否建议提供所有输入并对实例化进行处理,例如:

public class Processor
{
    private ProcessorConfig config;
    private ProcessorInputData inputData;

    public ProcessorResults Results { get; set; }

    public Processor(ProcessorConfig config, ProcessorInputData inputData)
    {
        this.config = config;
        this.inputData = inputData;

        Process();
    }

    private void Process()
    {
        // private function that does the processing using the the inputData
        // and constructs the public Results object
    }
    ...
} // class Processor

public class ProcessorExample
{
  public static Example()
  {
     ProcessorConfig config = GetConfigFromSomeWhere();
     ProcessorInputData inputData = GetInputDataFromSomeWhere();
     Processor processor = new Processor(config, inputData);
     ProcessorResults results = processor.Results;
  }
} // class ProcessorExample

或者更好的是在实例化(配置参数)上提供一些初始输入,并且在需要对某些数据进行处理时有一个单独的函数来调用,如下所示:

public class Processor
{
    private ProcessorConfig config;

    public Processor(ProcessorConfig config)
    {
        this.config = config;
    }

    public ProcessorResults Process(ProcessorInputData inputData)
    {
        // public function to call with inputData,
        // doing the processing and returning a Results object
    }
    ...
} // class Processor

public class ProcessorExample
{
  public static Example()
  {
     ProcessorConfig config = GetConfigFromSomeWhere();
     Processor processor = new Processor(config);

     ProcessorInputData inputData = GetInputDataFromSomeWhere();
     ProcessorResults results = processor.Process(inputData);
  }
} // class ProcessorExample

任何最好的想法?

1 个答案:

答案 0 :(得分:0)

关于“最佳实践”的东西是非常主观的。没有“只有坏”或“只有好”,但是,“这种情况在这种情况下是最好的做法”。

我个人而言,更喜欢第二个版本。因为:在执行方法之后,在分配参数之后。

这使您可以更好地控制操作。

操作是否会多次执行?

如果答案是肯定的,则使用第二个选项很常见。

如果答案是“否”,只需一次,通常会使用第一个选项。