Название: Выделение памяти под объект Отправлено: deaks от Февраль 10, 2011, 14:05 Добрый день
у меня есть классы: Class1 Class2 Class1 работает с Class2 через интерфейс IClass2, то есть в первом классе храню указатель на интерфейс. Вопрос - как и где логичнее выделять память под указатель размером второго класса? Сейчас у меня в Class1: IClass2 *obj = new Class2; - но это как-то кажется нелогичным, в том смысле, что первый класс будет все знать о втором, минуя интерфейс Проясните данную ситуацию)) Название: Re: Выделение памяти под объект Отправлено: Пантер от Февраль 10, 2011, 14:09 Можно через фабрику:
class Factory { IClass2 *obj () { return new Class2;} } Название: Re: Выделение памяти под объект Отправлено: deaks от Февраль 10, 2011, 14:21 а если у меня заведомо известно, что наследоваться от интерфейса будет только один класс?
то есть и весь смысл фабрики пропадает Название: Re: Выделение памяти под объект Отправлено: Пантер от Февраль 10, 2011, 14:24 А смысл тогда в интерфейсе?
Название: Re: Выделение памяти под объект Отправлено: deaks от Февраль 10, 2011, 14:33 :D
в принципе может быть и не один класс, но вероятность мала. Поэтому сразу сделан задел интерфейса. А по поводу фабрик - не хочется городить такие конструкции ради маловероятного случая((( Какой еще есть способ? Название: Re: Выделение памяти под объект Отправлено: ufna от Февраль 10, 2011, 14:41 В любом случае, если следовать логике "интерфейсов", создавать объект второго класса должен тот класс, который знает о нем, а не об интерфейсе. Т.е. "фабрики" не избежать, но это может быть какой-либо "главный" класс или еще что, что создает данный объект, а затем дает указатель на его интерфейс классу один.
Название: Re: Выделение памяти под объект Отправлено: deaks от Февраль 10, 2011, 14:50 учтем
спасибо за наводку)) Название: Re: Выделение памяти под объект Отправлено: deaks от Февраль 10, 2011, 14:55 сейчас вот подумал по поводу фабрики в остальных кусках программы и появились очень интересные мысли)
вдвойне спасибо!!! |