PHP Design Pattern

У меня есть класс, который выполняет операции с базой данных и возвращает результаты (array, true, false). И у меня есть другой класс, который создает строку JSON, используя этот класс в своем конструкторе. Можем ли мы сказать, что этот класс является адаптером? Или просто обертка или …

Class Db { public function getRows($params) { //... } } Class DbAdapter { private $_dbh; public function __construct($dbh) { $this->_dbh = $dbh; } public function getJson() { return '{"key": "foo", "key2": ' . json_encode($this->_dbh->getRows($params)) . '}'; } } 

благодаря

Id говорит, что его больше Decorator … http://en.wikipedia.org/wiki/Decorator_pattern

От: http://www.fluffycat.com/PHP-Design-Patterns/Adapter/

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

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

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

Делегирование, потому что класс DBAdapter делегирует задачу получения фактических строк в классе DB.

Decorator, потому что класс DBAdapter украшает класс DB дополнительными функциональными возможностями – выделением вывода в JSON.

Adapter / Wrapper, если вы считаете, что он позволяет другому клиенту получить доступ к вашим строкам базы данных, которые понимают только JSON или XML или какой-либо другой формат.

Но если бы нам пришлось выбрать один, я бы сказал, Адаптер. Он принимает данные в форме структур данных PHP и преобразует их в представление JSON.