Design Patterns : Elements of Reusable Object-Oriented Software



Download 4,06 Mb.
Pdf ko'rish
bet54/288
Sana07.04.2022
Hajmi4,06 Mb.
#535140
1   ...   50   51   52   53   54   55   56   57   ...   288
Bog'liq
GOF Design Patterns

Responsibility
 
Operations
 
window management
virtual void Redraw() 
virtual void Raise() 
virtual void Lower() 
virtual void Iconify() 
virtual void Deiconify() 
...
graphics
virtual void DrawLine(...) 
virtual void DrawRect(...) 
virtual voi
d DrawPolygon(...)
virtual void DrawText(...) 
...
Table 2.3: Window class interface 
Window is an abstract class. Concrete subclasses of Window support thedifferent 
kinds of windows that users deal with. For example,application windows, icons, 
and warning dialogs are all windows, butthey have somewhat different behaviors. 
So we can define subclasseslike ApplicationWindow, IconWindow, and DialogWindow 
to capture thesedifferences. The resulting class hierarchy gives applications 


Design Patterns: Elements of Reusable Object-Oriented Software 
67 
likeLexi a uniform and intuitive windowing abstraction, one that doesn'tdepend 
on any particular vendor's window system: 
Now that we've defined a window interface for Lexi to work with,where does the 
real platform-specific window come in? If we're notimplementing our own window 
system, then at some point our windowabstraction must be implemented in terms 
of what the target windowsystem provides. So where does that implementation live? 
One approach is to implement multiple versions of the Window class andits 
subclasses, one version for each windowing platform. We'd have tochoose the version 
to use when we build Lexi for a given platform.But imagine the maintenance headaches 
we'd have keeping track ofmultiple classes, all named "Window" but each implemented 
on adifferent window system. Alternatively, we could 
createimplementation-specific subclasses of each class in the Windowhierarchy

and 
end up with another subclass explosion problem like the onewe had trying to add 
embellishments. Both of these alternatives haveanother drawback: Neither gives 
us the flexibility to change thewindow system we use after we've compiled the 
program. So we'll haveto keep several different executables around as well. 
Neither alternative is very appealing, but what else can we do? Thesame thing 
we did for formatting and embellishment, namely, 
encapsulate the concept that 
varies
. What varies in this case is thewindow system implementation. If we 
encapsulate a window system'sfunctionality in an object, then we can implement 
our Window class andsubclasses in terms of that object's interface. Moreover, 
if thatinterface can serve all the window systems we're interested in, thenwe 
won't have to change Window or any of its subclasses to supportdifferent window 
systems. We can configure window objects to thewindow system we want simply by 



Download 4,06 Mb.

Do'stlaringiz bilan baham:
1   ...   50   51   52   53   54   55   56   57   ...   288




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