Где можно почитать про операцию "::"

  • Автор темы Светлана PHP
  • Дата начала

Vasya

Guest
... это мало отношения имеет к тому коду, и вообще никакого к вопросу который был первоначально задан
Мой ответ имеет прямое отношение и к коду и к вопросу.
Классическая реализация фабрики в Java, например
To obtain a NumberFormat ... call one of NumberFormat's factory methods:
NumberFormat f = NumberFormat.getInstance(loc);
Чтобы получить некий объект мы вызываем статический метод другого объекта -- фабрики, которая знает как создать нужный нам объект. Если же для получения нужного нам объекта надо еще создавать саму фабрику... :) То это получится слишком громоздко.

-~{}~ 21.03.05 15:18:

Обычно такой паттерн используют, когда пишется несколько типов классов db (по одному на свою базу)
Именно так и сделано в примере:
PHP:
//...
$db_class_name = 'db_' . $db_type;
//...
$obj =& new $db_class_name(); 
//...
 

Crazy

Developer
Автор оригинала: Vasya
Чтобы получить некий объект мы вызываем статический метод другого объекта -- фабрики, которая знает как создать нужный нам объект. Если же для получения нужного нам объекта надо еще создавать саму фабрику... :) То это получится слишком громоздко.
Когда ты познакомишься с J2EE, то увидишь, что использование в качестве factory именно объекта (экземпляра) -- распространенная практика. :) Причем, это гораздо удобнее и полезнее.

Если нам достаточно статической factory (введем такой термин), то это означает, что мы просто не по назначению используем язык (либо язык так уродлив, что не позволяет поступать иначе). Так, извращение NumberFormat.getInstance возникло просто оттого, что в Java вообще нет функций, живищих вне класса. И ее насильно засунули в класс NumberFormat (обрати внимание: не NumberFormatFactory).
 
Сверху