Что (если таковые имеются) подразумеваемые предположения или ограничения и различия в проектировании, как:Class структура образец вопрос. Что выбрать?
А) это:
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);
}
Я знаю, зависит от конкретного проекта, но что, если вышеуказанный класс является частью небольшой структуры? Первый класс способен поддерживать состояние и отделять шаги более естественно, но второй класс обеспечивает «связь в реальном времени» с внешним вызывающим абонентом более естественно, поскольку рабочий передается каждый раз, когда вызывается doWork().
Есть ли рекомендуемые способы использования или общие методы, которые определяют выбор между двумя способами? Благодарю.
Я думаю, что в этом базовом примере мы не можем назвать A плохим дизайном, потому что это всего лишь представитель структуры класса, а не фактический класс. Кроме того, doWork может генерировать исключение, если у него нет экземпляра обоих классов, что может быть приемлемым. – scubabbl 2008-09-26 09:12:35