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


Шаблонный метод (Template Method)



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

Шаблонный метод (Template Method)
Как можно запрограммировать инвариантную по след овательно сть
операций, обеспечив при этом возможно сть мод ификации или замены
отд ельных д ействий в буд ущем? Напишите реализацию метод а
исключительно в терминах д ругих метод ов.
В 
программировании 
существует 
огромное 
количество
классических по след овательно стей:
• ввод – обработка – вывод ;
• отправить сообщение – принять ответ;
• прочитать команд у – вернуть результат.
Нам хотело сь бы четко и понятно обозначить универсально сть этих
по след овательно стей 
и 
при 
этом 
обеспечить 
возможно сть
варьирования реализаций кажд ого из отд ельных этапов.
Под д ерживаемый 
любым 
объектно-ориентированным 
языком
механизм наслед ования обеспечивает про стой спо соб опред еления


универсальных по след овательно стей. В суперклассе созд ается метод ,
целиком и полно стью написанный в терминах д ругих метод ов. Кажд ый
из под классов может реализовать эти метод ы так, как ему уд обнее.
Например, базовая по след овательно сть выполнения теста опред еляется
в инфраструктуре JUnit след ующим образом:
TestCase
public void runBare() throws Throwable {
setUp();
try {
runTest();
}
finally {
tearDown();
}
}
Классы, производ ные от TestCase, могут реализовать setUp(),
runTest() и tearDown() так, как им этого хочется.
При использовании шаблона «Шаблонный метод » (Template Method)
возникает вопро с: над о ли созд авать д ля под метод ов реализации по
умолчанию? В TestCase.runBare() все три под метод а облад ают
реализациями по умолчанию:
• метод ы setUp() и tearDown() не выполняют никаких операций;
• метод runTest() д инамически обнаруживает и запускает все
тестовые метод ы, исход я из имени класса-теста.
Если общая по след овательно сть не имеет смысла, когд а не
опред елен 
од ин 
из 
ее 
этапов, 
вы 
д олжны 
отметить 
это,
во спользовавшись любой под ход ящей возможно стью используемого
вами языка программирования:
• в Java можно объявить под метод абстрактным;
• в Smalltalk созд айте реализацию метод а, которая генерирует
ошибку SubclassResponsibility.
Я не рекоменд ую изначально проектировать код так, чтобы в нем
использовался шаблонный метод . Лучше всего формировать шаблонные
метод ы исход я из накопленного опыта. Кажд ый раз, когд а я говорю себе:
«Ага, вот по след овательно сть, а вот – д етали реализации», – позд нее я
всегд а обнаруживаю, что мне приход ится перед елывать созд анный
мною шаблонный метод , заново перетасовывая код межд у общим и


частным.
Если вы обнаружили д ва варианта по след овательно сти в д вух
под классах, вы д олжны попытаться по степенно приблизить их д руг к
д ругу. По сле того как вы отд елите различающиеся части и выд елите
общую часть, то, что о станется, и есть шаблонный метод . По сле этого
вы можете переместить шаблонный метод в суперкласс и избавиться от
д ублирования.

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   100   101   102   103   104   105   106   107   ...   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