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



Download 1,35 Mb.
Pdf ko'rish
bet108/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   104   105   106   107   108   109   110   111   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

Самозванец (Imposter)
Как можно д обавить в программу новую вариацию некоторой
функционально сти? Созд айте новый объект с точно таким же
протоколом, как и существующий объект, но с отличающейся
реализацией.
При использовании процед урно-ориентированного под ход а д ля
решения под обной зад ачи в программу требуется д обавить как минимум
од ин условный оператор. Как было прод емонстрировано ранее, при
обсужд ении 
шаблона 
«Встраиваемый 
переключатель» 
(Pluggable
Selector), такие условные операторы имеют тенд енцию плод иться
под обно саранче. Чтобы избавиться от д ублирования, требуется
полиморфизм.
Пред ставьте, что у вас уже есть необход имая инфраструктура. У вас
уже есть объект, который реализует необход имую функционально сть.
Теперь вы хотите, чтобы ваша система д елала нечто отличающееся.


Если вы обнаружили очевид ное место д ля д обавления оператора if и при
этом не возникает д ублирования какой-либо существующей логики,
д ействуйте смело и решительно. Од нако зачастую д ля д обавления
вариации требуется внести изменения в код нескольких метод ов.
Если вы работаете в стиле TDD, решение об использовании
самозванца может возникнуть исход я из разных пред по сылок. Иногд а вы
пишете тест и у вас возникает желание реализовать новый сценарий.
Од нако ни од ин из существующих объектов не выражает того, что вы
хотите выразить. Пред ставьте, что мы тестируем графический ред актор
и нам уже уд ало сь реализовать корректное рисование прямоугольников:
testRectangle() {
Drawing d = new Drawing();
d. addFigure(new RectangleFigure(0, 10, 50, 100));
RecordingMedium brush = new RecordingMedium();
d. display(brush);
assertEquals("rectangle 0 10 50 100\n", brush.log());
}
Теперь мы хотим реализовать рисование овалов. В д анном случае
необход имо сть применения шаблона «Самозванец» (Imposter) очевид на:
заменяем RectangleFigure на OvalFigure.
testOval() {
Drawing d = new Drawing();
d. addFigure(new 

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   104   105   106   107   108   109   110   111   ...   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