Я обнаружил, что делаю это в своем коде, чтобы «кэшировать» работу, выполненную при создании экземпляров моих Zend_Db_Table
моделей:
if (Zend_Registry::isRegistered('x_table')) {
$x_table = Zend_Registry::get('x_table');
} else {
$x_table = new Default_Model_DbTable_X;
Zend_Registry::set('x_table', $x_table);
}
Меня беспокоило, что этот метод не очень СУХОЙ, и меня осенило, что одноэлементный паттерн, вероятно, будет лучшим способом сделать это. Проблема в том, что я никогда не писал синглтон-класс. Когда я проводил некоторые поиски в Интернете, я нашел несколько нецензурных комментариев о Zend_Db_Table
синглетонах, но реальных примеров не было.
У меня уже настроено кэширование метаданных.
- Как мне сделать мои
Zend_Db_Table
модели синглетонов?
- Есть ли подводные камни или недостатки?
Редактировать: Моя причина, по которой я подумал об одном-единственном ответе, заключалась в том, что я подумал, что в моем коде могут быть просто следующие вызовы $x_table = new Default_Model_DbTable_X;
, и единственный экземпляр будет возвращен, если он существует. Если это возможно, я бы предпочел это решение.