Как я могу отслеживать модели, используя другие модели? - PullRequest
0 голосов
/ 21 января 2012

Время от времени одной из моих моделей нужно будет позвонить другой. Какой лучший способ отследить это?

Я использовал массив в базовом классе каждой модели, чтобы, если Модель A вызывала Модель B более одного раза, второй и последующие вызовы возвращали существующий экземпляр, а не загружали новый.

Хотя это хорошо работает для простых случаев, я вижу, что у него есть ограничения. Например, возьмем случай, когда Модель A загружает Модель B и Модель C; тогда Модель C нуждается в доступе к Модели B (или даже к A) - она ​​снова загрузит класс!

Я подозреваю, что мне нужен координирующий объект, внешний по отношению к модельным классам, который действует как хранилище. На какие шаблоны я должен смотреть?

Кстати, я использую PHP.

РЕДАКТИРОВАТЬ: Другое соображение заключается в том, что мои представления также могут вызывать методы модели напрямую. В этих случаях имеет смысл обслужить уже созданную модель, а не новую ...

Спасибо!

1 Ответ

0 голосов
/ 21 января 2012

Взгляните на схему наблюдателя , которая используется в таком случае.

Это просто ... у каждой модели есть список с слушателями , и когда что-то происходит, он говорит всем слушателям эй, что-то случилось

...