Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Теория программирования > Общие вопросы создания ПО
Перезагрузить страницу Паттерн проектирования Абстрактный Агрегат
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Паттерн проектирования Абстрактный Агрегат - 30.07.2004, 12:23

Вот, придумал паттерн проектирования "Абстрактный Агрегат". Выношу его на обсуждение.

Этот паттерн предназначен для взаимоссылающихся друг на друга объектов имеющих одинаковое время жизни. Причем, даже не обязательно самих объектов, а для ролей которые играют объекты, и роли имеют одинаковое время жизни. Так что как только одна из ролей перестает выполняться, автоматически и другая роль теряет смысл (а сами объекты могут продолжать жить дальше). [list]Роль Мужа <--> Роль Жены
Роль Друга <--> Роль Друга

Роль Матери <--> Роль Ребенка
Роль Учителя <--> Роль Ученика

Роль Начальника <--> Роль Подчиненного
Роль Работодателя <--> Роль Работника
Роль Компании <--> Роль Сотрудника
Роль Государства <--> Роль Гражданина

Роль Врача <--> Роль Больного[list]
В перечисленных примерах все объекты играющие одну из ролей имеют ссылку на своего напарника. То есть существует циклические ссылки. Чтобы работать с такой парой объектов обычно заводят третий объект-агрегат имеющий ссылки на участников взаимодействия. Ну вот, смысл расматриваемого тут паттерна проектирования состоит в том, что в языке программирования имеющего сборщик мусора, этот третий объект-агрегат излишен, а его интерфейс с легкостью могут реализовать сами участники взаимодействия:
Код:
TYPE
  Взаимодействие = INTERFACE
    PROCEDURE ПервыйУчастник: ТипПервогоУчастника; 
    PROCEDURE ВторойУчастник: ТипВторогоУчастника; 
  END;

ТипПервогоУчастника = INTERFACE (Взаимодействие)
    //...
  END;

ТипВторогоУчастника = INTERFACE (Взаимодействие)
    //...
  END;
Ведь исполнитель роли все равно и так уже по любому всегда имеет ссылку на своего напарника, а уж на самого себя ссылку он всегда может выдать, а значит реализация интерфейса "Взаимодействие" осуществляется бесплатно. Агрегат существует виртуально, как абстракция - "Абстрактный агрегат".
Ответить с цитированием
  (#2 (permalink)) Старый
c++ c++ вне форума
Member
 
Сообщений: 962
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.12.2003
По умолчанию 16.08.2004, 21:16

А в чем заключается смысл паттерна? Ведь если имеется ввиду взаимооднозначное соответствие между ролями, а не объектами, то непонятно, как вообще его реализовать, ведь все-таки роль скорее понятие семантическое.
Если все-таки между объектами, то рассмотрим
Роль Мужа <--> Роль Жены
то при удалении объекта Жена должен удалится Муж?
Вот интересно, что все-таки наверное можно говорить о состояниях, то есть при удалении жены не удаляется муж, а переходит в состояние "без жены", от этого могут меняться состояния объектов других жен или любовниц.
Thanx.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паттерны проектирования anonymous Мысли вслух 5 17.07.2010 19:33
Ищу энтузиастов для проектирования элементов ИИ Irkin Некоммерческие проекты 0 20.09.2008 02:25
Инженер проектирования ЦОД (SUN, Solaris), Москва Business Craft Работа 0 04.07.2008 14:32
Подскажите программы для проектирования. SS Любые вопросы от новичков 3 14.06.2008 08:50
Создать абстрактный тип данных berserker Вопросы начинающих программистов 4 21.10.2007 23:28
Паттерны проектирования Kutushut Общие вопросы создания ПО 9 12.01.2007 10:31
Паттерны проектирования книги, ресурсы, библиотеки BreakPointMAN С/С++ 8 10.03.2006 17:56
Кошмарный агрегат Dian Офтопик 6 14.01.2006 20:12
Как SmallTalk взаимодействует с технологиями объектно-ориентированного проектирования VVasia Smalltalk 5 22.06.2004 17:58
Что такое паттерн и для чего он нужен tanksoft С/С++ 3 20.03.2004 20:47
Краеугольные столпы проектирования Guderian Общие вопросы создания ПО 38 28.08.2003 15:57



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов