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


Нуль-объект (Null Object)



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

Нуль-объект (Null Object)
Как реализовать специальные случаи использования объектов?
Созд ать специальный объект, пред ставляющий собой специальный
случай. Специальный объект д олжен облад ать точно таким же
протоколом, что и обычный объект, но он д олжен вести себя
специальным образом.
В качестве примера рассмотрим код , который я позаимствовал из
java.io.File:
java.io.File
public boolean setReadOnly() {
SecurityManager guard = System.getSecurityManager();
if (guard!= null) {
guard.canWrite(path);
}
return fileSystem.setReadOnly(this);
}
В классе java.io.File можно обнаружить 18 проверок guard!= null. Я
преклоняюсь перед усерд ием, с которым разработчики библиотек Java
стараются сд елать файлы безопасными д ля всего о стального мира,
од нако я также начинаю немножко нервничать. Буд ут ли программисты
Oracle и в буд ущем столь же аккуратны, чтобы не забыть проверить
результат выполнения метод а getSecurityManager() на равенство
значению null?
В рамках альтернативного решения можно созд ать новый класс
LaxSecurity, который вообще не генерирует исключений:
LaxSecurity
public void canWrite(String path) {
}
Если 
кто-то 
пытается 
получить 
SecurityManager
од нако
пред о ставить такой объект нет возможно сти, вместо него мы
возвращаем LaxSecurity:
SecurityManager


public static SecurityManager getSecurityManager() {
return security == null? new LaxSecurity(): security;
}
Теперь мы можем не беспокоиться о том, что кто-то забуд ет
проверить результат выполнения метод а на равенство значению null.
Изначальный код становится существенно более чистым:
File
public boolean setReadOnly() {
SecurityManager security = System.getSecurityManager();
security.canWrite(path);
return fileSystem.setReadOnly(this);
}
Од нажд ы во время выступления на конференции OOPSLA нас с Эр
ихом Гаммой (Erich Gamma) спро сили, можно ли использовать
«Нуль-объект» (Null Object) в рамках од ного из классов JHotDraw. Я
принялся рассужд ать о преимуществах такой мод ернизации, в то время
как Эрих по считал, что д ля этого нам прид ется увеличить код на д есять
строк, при этом мы избавимся от од ного условного оператора –
преимущество сомнительно. (К тому же ауд итория была весьма
нед овольна нашей несогласованно стью.)

Download 1,35 Mb.

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