Design Patterns : Elements of Reusable Object-Oriented Software


Encapsulating the Analysis



Download 4,06 Mb.
Pdf ko'rish
bet68/288
Sana07.04.2022
Hajmi4,06 Mb.
#535140
1   ...   64   65   66   67   68   69   70   71   ...   288
Bog'liq
GOF Design Patterns
Копасов Игорь (1), Т Е Л Е Ф О Н О Г Р А М М А ЗООМ, 20201546 п.80 использ., Oliy matematika, презентация индустрия мутакил иши, 3000 most common words in English, Sun'iy intellekt, 1638511850 AE, 1638511850 AE, Hisob-raqan (Patent boji), O'RQ-600 23-MODDA, Talabaning haftalik hisoboti namunasi , iikinchi hafta amaliyoti., Таҳлил тест
Encapsulating the Analysis 
From all indications, we need to encapsulate the analysis in aseparate object, 
much like we've done many times before. We could putthe machinery for a given 
analysis into its own class. We could usean instance of this class in conjunction 
with an appropriate iterator.The iterator would "carry" the instance to each glyph 
in thestructure. The analysis object could then perform a piece of theanalysis 
at each point in the traversal. The analyzer accumulatesinformation of interest 
(characters in this case) as the traversalproceeds: 


Design Patterns: Elements of Reusable Object-Oriented Software 
85 
The fundamental question with this approach is how the analysis 
objectdistinguishes different kinds of glyphs without resorting to typetests or 
downcasts. We don't want a SpellingChecker classto include (pseudo)code like 
void SpellingChecker::Check (Glyph* glyph) { 
Character* c; 
Row* r; 
Image* i; 
if (c = dynamic_cast(glyph)) { 
// analyze the character 
} else if (r = dynamic_cast(glyph)) { 
// prepare to analyze r's children 
} else if (i = dynamic_cast(glyph)) { 
// do nothing 


This code is pretty ugly. It relies on fairly esoteric capabilitieslike type-safe 
casts. It's hard to extend as well. We'll have toremember to change the body of 
this function whenever we change theGlyph class hierarchy. In fact, this is the 
kind of code thatobject-oriented languages were intended to eliminate. 
We want to avoid such a brute-force approach, but how? Let's considerwhat happens 
when we add the following abstract operation to the Glyphclass: 
void CheckMe(SpellingChecker&) 
We define CheckMe in every Glyph subclass as follows: 



Download 4,06 Mb.

Do'stlaringiz bilan baham:
1   ...   64   65   66   67   68   69   70   71   ...   288




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

    Bosh sahifa
davlat universiteti
ta’lim vazirligi
axborot texnologiyalari
maxsus ta’lim
zbekiston respublikasi
guruh talabasi
O’zbekiston respublikasi
nomidagi toshkent
o’rta maxsus
davlat pedagogika
texnologiyalari universiteti
toshkent axborot
xorazmiy nomidagi
rivojlantirish vazirligi
pedagogika instituti
Ўзбекистон республикаси
tashkil etish
haqida tushuncha
таълим вазирлиги
vazirligi muhammad
O'zbekiston respublikasi
toshkent davlat
махсус таълим
respublikasi axborot
kommunikatsiyalarini rivojlantirish
vazirligi toshkent
saqlash vazirligi
fanidan tayyorlagan
bilan ishlash
Toshkent davlat
sog'liqni saqlash
uzbekistan coronavirus
respublikasi sog'liqni
coronavirus covid
koronavirus covid
vazirligi koronavirus
qarshi emlanganlik
covid vaccination
risida sertifikat
vaccination certificate
sertifikat ministry
Ishdan maqsad
fanidan mustaqil
matematika fakulteti
o’rta ta’lim
haqida umumiy
fanlar fakulteti
pedagogika universiteti
ishlab chiqarish
moliya instituti
fanining predmeti