Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

четверг, 9 сентября 2010 г.

PHP. Шаблоны проектирования. Адаптер.

Шаблон проектирования "Адаптер" используется, когда требуется преобразовать объект одного типа в объект другого типа. Использование этого шаблона, как и всех прочих, повышает чистоту кода и возможность его многократного использования.


// Класс для вывода адреса
class AddressDisplay
{
private $addressType;
private $addressText;

public function setAddressType($addressType)
{
$this->addressType = $addressType;
}

public function getAddressType()
{
return $this->addressType;
}

public function setAddressText($addressText)
{
$this->addressText = $addressText;
}

public function getAddressText()
{
return $this->addressText;
}
}

// Класс адреса электронной почты
class EmailAddress
{
private $emailAddress;

public function getEmailAddress()
{
return $this->emailAddress;
}

public function setEmailAddress($address)
{
$this->emailAddress = $address;
}
}

// Адаптер
class EmailAddressDisplayAdapter extends AddressDisplay
{
public function __construct($emailAddr)
{
$this->setAddressType("email");
$this->setAddressText($emailAddr->getEmailAddress());
}
}

// Использование адаптера
$email = new EmailAddress();
$email->setEmailAddress("user@example.com");

$address = new EmailAddressDisplayAdapter($email);

echo($address->getAddressType() . "\n") ;
echo($address->getAddressText());


Как видно, после реализации шаблона, нам больше нечего беспокоится за то, как EmailAddress преображается в AddressDisplay. И это хорошая новость, особенно если изменится реализация AddressDisplay.
Основное преимущество модульного дизайна в том, чтобы иметь возможность менять минимум кода при изменении бизнес-модели приложения или добавлении нового функционала. Важно помнить об этом даже в тривиальных вещах, таких как передача значений от объекта к объекту.

Комментариев нет:

Отправить комментарий