// Класс для вывода адреса
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.
Основное преимущество модульного дизайна в том, чтобы иметь возможность менять минимум кода при изменении бизнес-модели приложения или добавлении нового функционала. Важно помнить об этом даже в тривиальных вещах, таких как передача значений от объекта к объекту.
Комментариев нет:
Отправить комментарий