Реферат: Generaliting Dispatching in Distributed Object System

ник и аргументы. Hапример:

(aShape 'draw aDevice)

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

aShape, но и от aDevice. Здесь вместо тупого выстраивания кон-

струкции типа case целесообразно воспользоваться техникой кратно-

го dispatching. В классической модели единственно определяющим

аргументом является сообщение; соответственно, разумно объеди-

нить сообщение draw, посылаемое aDevice с различными вариантами

aShape, например, drawRectangle. Это решение делает проблему вы-

бора скрытой от диспетчера.

Соответствующий механизм называется родовыми функциями. Это

группа методов, обеспечивающих сходную функциональность над мно-

жеством классов. draw есть родовая функция, описываемая как

(defgeneric draw (aShape, aDevice))

(defmethod draw (aShape Rectangle) (aDevice X-Window) ... )

...

В DOS для реализации такого подхода требуется описание спе-

циального объекта - родовой функции; ее задача заключается в "ре-

гистрации" соответствующих частных методов; получив заклинание,

диспетчер родовой функции направляет его тому или иному методу в

зависимости от параметров. Hа языке DOS это описывается так:

(DEFINE draw

(GENERIC-FUNCTION (shape device))

(ADD-METHOD draw (shape device)

(AND (is-rectangle shape) (is-X-Window device))

...

)

...

Так как мы не вправе пользоваться никакой предопределенной инфор-

К-во Просмотров: 223
Бесплатно скачать Реферат: Generaliting Dispatching in Distributed Object System