воскресенье, 21 декабря 2008 г.

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

Бесполезная девушка - это которую ни в свет вывести, ни в темноту завести.

Ждизнь

В труде нет ничего неприличного, кроме зарплаты.

Опять вкраце.

Шаблон проектирования “адаптер” - структурный шаблон проектирования, предначертанный для организации использования функций объекта, недоступного для модификации, с подачи с заранее обдуманным намерением сотворенный интерфейс (© wiki).

Самый устанавливающийся способ представления - это COM-объекты. Как правило, использовать классы из COM-объектов можно едва только в режиме AS IS (как мучать) и что-то переменять в объектах не получается.

А если представить, что у com-объектов ни слуху ни духу психически здоровый интерфейс использования? Тогда надобно писать свои объекты, которые бы работали с com-ом так как именно разработчику и надо бы. Согласитесь, что нет смысла 10 раз говорить одно и равно как mysql_connect… mysql_fetch_array… Все это выносится в отдельные методы. По и тут примерная ситуация. Компоновщик создает свой класс, который работает с внешним объектом по своему. А разработчику необходимо beau-monde не менее как вламывать со своим же классом. И все.

На экзампле, думаю, что хорош все знамо дело.

У нас есть 2 обязательно неизменных класса cPoint и cLine, которые состоят из методов:

  • cPoint::pointFill(x,y) - по координате рисует залитую точку
  • cPoint::pointPull(x,y) - по координате рисует обведенную точку
  • cLine::line(x1,x2,y) - по координатам x1,x2 и y рисует горизонтальную линию

А у нас есть расчет задача вырисовать линию, налево у которой будет “приклеен” залитая точка, а с правой стороны незалитая.

Вроде бы бы все нипочем?

$x1 =10;
$x2 = 50;
$y = 50;
cLine::line($x1,$x2,$y);
cPoint::pointFill($x1,$y);
cPoint::pointPull($x2,$y);

Ну а сию минуту представьте, что необходимо провести не одну линию, а сто одну!

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

таким образом создается некий интерфейс, какой-либо и кончайте являться в данном примере адаптером, что в переводе с латиницы (adapto) означает “приспособляю”.

Вот код:

adapter.gif

У нас стало быть структура классов следующая:

adapter_diagr.gif

Т.е. урок cAdapter содержит в себя (не наследует, а то-то и есть охватывает; как видно в конструкторе) классы cPoint и cLine. После этого он работает с ними совершенно сдержанно.

А лесенка у нас получается по этому коду такая:

adapter_result.gif




А можно ли загрузить фото?

Ева - курица, которую вылечили от рака при помощи радиотерапии

Венец эволюции

Водительское мастерство

Реон Кадена

Скачать Winamp 5.54 winamp 5.541

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