【发布时间】:2014-10-14 07:37:07
【问题描述】:
我有一个关于 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
你知道哪个最好吗?
【问题讨论】:
标签: oop architecture