Используемый шаблон адаптера и наследование для простого соединения с БД - PullRequest
0 голосов
/ 19 марта 2012

У меня есть небольшая проблема, пытаясь понять, как мой текущий класс соединения с базой данных был разработан как адаптер. Он предоставляет метод соединения, который вызывает метод соединения родителя, который является MDB2

в PEAR.
require_once(MDB2....)

class Connection
{
   //new/overloading methods that call parents'methods   
}

Что касается базового определения того, что представляет собой шаблон адаптера, я понимаю, что соединение - это одно, но что заставляет меня задуматься о возможных различиях между наследованием и используемым адаптером?

Любое объяснение приветствуется, спасибо.

Обновление

Что я не могу понять, так это если я изменю класс как

class Connection extends MDB2 //for example
{
    // my new methods
    // along with other overloading methods
}

Мое соединение все еще считается адаптером?

1 Ответ

0 голосов
/ 19 марта 2012

Чего я не могу понять, так это если я перепроектирую класс как ..., считается ли мое Соединение Адаптером?

Насколько я понимаю, адаптер используется для того, чтобы объекты, которые обычно не предназначены для совместной работы, по-прежнему могли бесперебойно работать. Например:

class TwoProngOutlet
{
   public function connect($cord)
   {
      // Plug $cord into two prong outlet
   }
}

class ThreeProngOutlet
{ 
   public function connect($cord)
   {
      // Plug $cord into three prong outlet
   }
}

class OutletAdapter
{
   public function getOutlet($cord)
   {
      if($cord->prongs == 2)
      { 
         return new TwoProngOutlet($cord);
      }
      else if($cord->prongs == 3)
      {
         return new ThreeProngOutlet($cord);
      }
   }
}

$adapter = new OutletAdapter;
$cord = new TwoProngCord;

// Adapt outlet to meet cord type
$outlet = $adapter->getOutlet($cord);

// Plug it in without having to know what type of outlet we are using
$outlet->connect($cord);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...