Каковы (если таковые имеются) подразумеваемые предположения или ограничения и различия проектирования, такие как:
А) это:
class SampleClass1
{
IWorker workerA;
IWorker workerB;
void setWorkerA(IWorker w);
void setWorkerB(IWorker w);
WorkResult doWork();
}
B) по сравнению с этим:
class SampleClass2
{
WorkResult doWork(IWorker workerA, IWorker workerB);
}
Я знаю, что это зависит от конкретного проекта, но что, если вышеуказанный класс является частью небольшой структуры? Первый класс может поддерживать состояние и разделять шаги более естественно, но второй класс обеспечивает более естественную связь с внешним абонентом в режиме реального времени, поскольку Worker передается при каждом вызове doWork ().
Существуют ли рекомендуемые способы использования или общие практики, которые определяют выбор между двумя вышеуказанными способами? Спасибо.