| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Способы создание экземпляров класса |
| Автор: evilsoul 1.6.2012, 12:23 | ||
| Всем добрый день или ночь. Собственно перейдем сразу к делу. Есть некий класс, назовем его Foo, в системе создаются экземпляры этого класса. new Foo([набор основных параметров 1], [второстепенные параметры]); new Foo([набор основных параметров 2], [второстепенные параметры]); new Foo([набор основных параметров 3], [второстепенные параметры]); Причем все время используются только эти три набора основных параметров, хотелось бы избавится от постояного указывания этих основных параметров. Есть несколько мыслей как это сделать: - Наследоваться от этого класса и породить еще три класса в котором будут уже жестко вбиты основные параметры. - Использовать фабрику для создания нужных экземпляров класса. - Комбинация первых двух вариантов, создать дочерние классы и в фабрике порождать уже объекты этих классов. Насколько приемлем варинат, если добавить в класс Foo статические методы вида
Буду рад любому конструктивному и более-менее развернотому совету. |
| Автор: baldina 1.6.2012, 17:18 |
имеет смысл только в случае если "основные параметры" наделяют класс каким-то определенным смыслом, т.е. действительно имеет место отношение наследования. |
| Автор: Sentox 1.6.2012, 20:44 |
| Если классы являются какой то одно концепции или абстракции лучше создавать инициализацию параметров в абстрактной фабрике. Но этот способ несколько скрывает понимание архитектуры, то есть инициализация параметров находится на "скрытом" уровне. Если есть прямое указание для создания дочернего как типа "является" (as-is), как сказал baldina, лучше наследование, так как понимание и чтение архитектуры, кода клиента увеличивается. Так же увеличивается инкапсуляция типовых параметров. Судя по всему, основные параметры у Вас и есть свойства типов, если это так, лучше выделить в дочерние (расширяемые классы). |
| Автор: evilsoul 2.6.2012, 16:49 | ||
| Спасибо всем за помощь, ваше мнение помогло мне с решением, я склонился в сторону создания дочерних классов. Добавлено через 12 минут и 21 секунду
А можно как-нибудь на примере, насколько я знаю, пхп не позволяет описать несколько конструкторов для класса. |
| Автор: ksnk 2.6.2012, 17:58 |
| А чем собственный вариант не подходит? Вызыать его нужно не через new, вот и вся разница |
| Автор: evilsoul 2.6.2012, 18:54 |
| Все понял, спасибо. |