Экстремальное программирование. Разработка через тестирование


Объект-значение (Value Object)



Download 1,35 Mb.
Pdf ko'rish
bet101/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   97   98   99   100   101   102   103   104   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

Объект-значение (Value Object)
Как след ует спроектировать объект, который буд ет широко
использоваться, но д ля которого ид ентификация не имеет о собого
значения? Настройте со стояние объекта в момент его созд ания и
никогд а не меняйте его. В результате выполнения любых операций с
д анным объектом д олжен получаться новый объект.
Объектно-ориентированный под ход – это великолепная вещь.
Над еюсь, я имею право написать эту фразу в д анной книге. Объекты
являются отличным спо собом организации логики д ля по след ующего
понимания и ро ста. Од нако существует од на маленькая проблема
(хорошо, хорошо, вообще-то проблем больше, од нако сейчас мы
ко снемся только од ной из них).
Пред ставьте, что я – объект и у меня есть прямоугольник
(Rectangle). Я вычисляю некоторое значение, зависящее от этого
прямоугольника, например его площад ь. Чуть позже некто (например,
д ругой объект) вежливо про сит меня пред о ставить ему мой
прямоугольник д ля выполнения некоторой операции. Чтобы не
показаться невежливым, я пред о ставляю ему мой прямоугольник. А
через пару мгновений, вы только по смотрите, прямоугольник был


мод ифицирован у меня за спиной! Значение площад и, которое я
вычислил ранее, теперь не соответствует д ействительно сти, и не
существует спо соба известить меня об этом.
Это классический пример проблемы наложения имен (aliasing). Если
д ва объекта ссылаются на од ин и тот же третий объект и если од ин из
первых д вух тем или иным образом изменяет третий, общий д ля них,
объект, второму объекту лучше не полагаться на текущее со стояние
общего объекта.
Существует несколько спо собов решения проблемы наложения
имен. Во-первых, вы можете никому не отд авать объект, от со стояния
которого вы зависите. Вместо этого в случае необход имо сти вы можете
созд авать копии этого объекта. Такой под ход может потребовать
слишком много времени и слишком много про странства, кроме того,
игнорируется ситуация, когд а вы хотите сд елать изменения некоторого
объекта общими д ля нескольких д ругих объектов, зависящих от его
со стояния. Еще од но решение – шаблон «Наблюд атель» (Observer). В
этом случае, если вы зависите от со стояния некоторого объекта, вы
д олжны пред варительно сообщить ему об этом, иначе говоря,
зарегистрироваться. Объект, за со стоянием которого след ят, оповещает
все зарегистрированные им объекты-наблюд атели о своем изменении.
Шаблон «Наблюд атель» (Observer) может затруд нить понимание
по след овательно сти выполнения операций, кроме того, логика
формирования и уд аления зависимо стей межд у объектами выгляд ит
д алеко не ид еальной.
Еще од но решение пред лагает несколько ограничить возможно сти,
которыми облад ает типичный объект в рамках ООП. Образно говоря,
объект становится «менее чем объектом». Что это значит? Обычные
объекты облад ают со стоянием, которое изменяется с течением времени.
Если мы захотим, мы можем запретить им меняться. Если у меня есть
объект и я знаю, что он не может измениться, я могу перед авать ссылки
на этот объект любому д ругому объекту, не беспокоясь при этом о
проблеме наложения имен. Если объект не под д ерживает возможно сти
своего изменения, никаких мод ификаций у меня за спиной не может
произойти.
Я помню, как похожая ситуация возникла с целыми числами, когд а я
впервые изучал язык Smalltalk. Если я изменяю бит 2 на 1, почему все
д войки не становятся шестерками?
a:= 2.


b:= a.
a:= a bitAt: 2 put: 1.

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   97   98   99   100   101   102   103   104   ...   140




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish