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


Встраиваемый переключатель (Pluggable Selector)



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

Встраиваемый переключатель (Pluggable Selector)
[26]
Как обеспечить различающееся повед ение разных экземпляров
од ного и того же класса? Сохраните имя метод а в переменной и
д инамически обращайтесь к этому метод у.
Что д елать, если у вас есть д есять под классов од ного базового
класса и в кажд ом из них реализован только од ин метод ? Может
оказаться, что созд ание под классов – это слишком тяжеловесный
механизм д ля реализации столь небольших различий в повед ении
объектов.
abstract class Report {
abstract void print();
}
class HTMLReport extends Report {
void print() {…
}
}
class XMLReport extends Report {
void print() {…
}
}
Альтернативное решение: созд ать ед инственный класс с оператором
switch. В зависимо сти от значения поля происход ит обращение к разным


метод ам. Од нако в этом случае имя метод а упоминается в трех местах:
• при созд ании экземпляра;
• в операторе switch;
• в самом метод е.
abstract class Report {
String printMessage;
Report(String printMessage) {
this.printMessage = printMessage;
}
void print() {
switch (printMessage) {
case "printHTML":
printHTML();
break;
case "printXML":
printXML():
break;
}
};
void printHTML() {
}
void printXML() {
}
}
Кажд ый раз, когд а вы д обавляете новую разновид но сть печати, вы
д олжны позаботиться о д обавлении нового метод а печати и
ред актировании оператора switch.
Шаблон 
«Встраиваемый 
переключатель» 
(Pluggable 
Selector)
пред лагает д инамически обращаться к метод у с использованием
механизма рефлексии:
void print() {
Method runMethod = getClass(). getMethod(printMessage, null);
runMethod.invoke(this, new Class[0]);


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

Download 1,35 Mb.

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