Синглтон против CodeIgniter -style $ this для доступа к переменным - PullRequest
0 голосов
/ 07 января 2010

Интересно, каковы плюсы и минусы этих двух подходов к доступу к переменным:

1) CodeIgniter-style (у этого есть имя?)

public function doSomething()
{
 $database = $this->database; // or just $this->database
}

2) Шаблон Singleton

public function doSomething()
{
 $database = Framework_Database::getInstance();
}

Одно очевидное отличие состоит в том, что с Singleton вы не можете его изменить. Вы можете получить доступ только к нему, но я говорю здесь только в отношении доступа к экземпляру класса или переменной.

О, и есть ли другие подходы?

Ответы [ 2 ]

3 голосов
/ 07 января 2010

Эти два метода получения ссылки на существующий экземпляр на самом деле не являются взаимоисключающими. Первый предполагает, что метод doSomething () содержится в классе, который также содержит поле $ database, которое было установлено на экземпляр Database (возможно, через конструктор класса). Эта первоначальная установка базы данных $ this-> вполне могла быть с помощью метода getInstance () синглтона.

Полагаю, тогда вы могли бы сравнить эти два вопроса о том, будете ли вы сохранять ссылку на экземпляр как поле класса или всегда запрашивать новую ссылку непосредственно из Singleton. Я не могу вспомнить время, когда это не сводится к просто предпочтениям, хотя определенно выберу один и придерживайся его. (лично я бы выбрал второе для разделения интересов)

Самое главное, согласованность шаблонов, которые вы используете в своем коде, будет иметь большое значение для снижения затрат на обслуживание.

2 голосов
/ 08 января 2010

Взгляните на это На шаблонах проектирования: когда использовать синглтон?

Может быть понятно, когда использовать шаблон синглтона или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...