![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Smak |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 30.6.2005 Репутация: нет Всего: 1 |
Есть класс, которые работает в двух режимах, режим работы устанавливается через конструктор класса.
Нужно не создавать объект если передан неизвестный режим. Пример:
Собственно как вернуть из конструктора false вместо объекта? Это сообщение отредактировал(а) Smak - 3.7.2008, 07:58 |
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
Собственно в конструкторе это сделать нельзя но можно сделать статический метод который в зависомости от ситуации будет создавать обект либо возвращать false. Конструктор будет в этом случае приватным. Тоесть примерно так.
Это сообщение отредактировал(а) krundetz - 3.7.2008, 09:01 |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Естественно, false в конструкторе вернуть нельзя, но это и не нужно. То что в конструктор были переданы не верные данные - исключительная ситуация, и соответственно, нужно бросить экзепшен. Пример:
Ситуации когда нужно именно бросать экзепшены, а не возращать "фолзы", имхо, хорошо описал LSD тут. Это сообщение отредактировал(а) sTa1kEr - 3.7.2008, 10:29 |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Верный вариант - м исключением. Это не то, что хочет топикстартер, но то, что он хочет - неправильно.
|
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Шаблон фабрики классов посмотри
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |