Re: Вопрос по кодонаписанию
От: Airat Burganov Россия http://www.burganov.com
Дата: 08.01.06 08:34
Оценка:
Т>Предлагаю обсудить то, как можно было бы более правильно и красиво реализовать подписку на собылия объекта и отказ от них.
Т>то как это сделано в AWT/SWING например у Component
Т>лично я нахожу откровенно корявым и загаживающим API. (нет? )

Т>более элегантным решением могло бы стать что-то вроди

T> что думаете?

Мне больше нравится стандартное решение.
Кроме того ваше решение противоречит т.н. правилу Деметры, упоминание о котором можно встретить в книжке
С. Макконела "Совершенный код" (глава 6.3)

Избегайте опосредованных вызовов методов других классов.
Непосредственные связи довольно опасны. Опосредованные связи, такие как account.ContactPerson().DaytimeContactlnfo().PhoneNumberO, опасны еще больше. В связи с этим ученые сформулировали «Правило Деметры (Law of Demeter)» (Lieberherr and Holland, 1989), которое гласит, что Объект А может вызывать любые из собственнных методов. Если он создает Объект В, он может вызывать любые методы Объекта В, но ему не следует вызывать методы объектов, возвращаемых Объектом В. В нашем случае это означает, что вызов account.ContactPerson() приемлем, однако вызова account.ContactPerson().DaytimeContactlnfo() следовало бы избежать.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.