Erich Gamma Ralph Johnson Richard Helm John Vlissides Addison-Wesley


Проектирование редактора документов



Download 6,32 Mb.
Pdf ko'rish
bet71/273
Sana02.03.2022
Hajmi6,32 Mb.
#479589
1   ...   67   68   69   70   71   72   73   74   ...   273
Bog'liq
Priemioop

Проектирование редактора документов
2.9. Резюме
При проектировании Lexi мы применили восемь различных паттернов:
а компоновщик для представления физической структуры документа;
а стратегия для возможности использования различных алгоритмов форма-
тирования;
а декоратор для оформления пользовательского интерфейса;
а абстрактная фабрика для поддержки нескольких стандартов внешнего об-
лика;
а мост для поддержки нескольких оконных систем;
а команда для реализации отмены и повтора операций пользователя;
а итератор для обхода структур объектов;
а посетитель для поддержки неизвестного заранее числа видов анализа без
усложнения реализации структуры документа.
Ни одно из этих проектных решений не ограничено документо-ориентиро-
ванными редакторами вроде Lexi. На самом деле в большинстве нетривиальных
приложений есть возможность воспользоваться многими из этих паттернов,
быть может, для разных целей. В приложении для финансового анализа паттерн
компоновщик можно было бы применить для определения инвестиционных
портфелей, разбитых на субпортфели и счета разных видов. Компилятор мог бы
использовать паттерн стратегия, чтобы поддержать реализацию разных схем
распределения машинных регистров для целевых компьютеров с различной архи-
тектурой. Приложения с графическим интерфейсом пользователя вполне могли бы
применить паттерны декоратор и команда точно так же, как это сделали мы.
Хотя мы и рассмотрели несколько крупных проблем проектирования Lexi, но
осталось гораздо больше таких, которых мы не касались. Но ведь и в книге описа-
ны не только рассмотренные восемь паттернов. Поэтому, изучая остальные пат-
терны, подумайте о том, как вы могли бы применить их к Lexi. А еще лучше поду-
майте об их использовании в своих собственных проектах!


Глава 3. Порождающие паттерны
Порождающие паттерны проектирования абстрагируют процесс инстанцирова-
ния. Они помогут сделать систему независимой от способа создания, композиции
и представления объектов. Паттерн, порождающий классы, использует наследо-
вание, чтобы варьировать инстанцируемый класс, а паттерн, порождающий объек-
ты, делегирует инстанцирование другому объекту.
Эти паттерны оказываются важны, когда система больше зависит от компози-
ции объектов, чем от наследования классов. Получается так, что основной упор
делается не на жестком кодировании фиксированного набора поведений, а на опре-
делении небольшого набора фундаментальных поведений, с помощью компози-
ции которых можно получать любое число более сложных. Таким образом, для
создания объектов с конкретным поведением требуется нечто большее, чем прос-
тое инстанцирование класса.
Для порождающих паттернов актуальны две темы. Во-первых, эти паттерны
инкапсулируют знания о конкретных классах, которые применяются в системе.
Во-вторых, скрывают детали того, как эти классы создаются и стыкуются. Един-
ственная информация об объектах, известная системе, - это их интерфейсы, опре-
деленные с помощью абстрактных классов. Следовательно, порождающие паттер-
ны обеспечивают большую гибкость при решении вопроса о том,
 что
создается,
кто
это создает,
 как
и
 когда.
Можно собрать систему из «готовых» объектов с са-
мой различной структурой и функциональностью статически (на этапе компиля-
ции) или динамически (во время выполнения).
Иногда допустимо выбирать между тем или иным порождающим паттерном.
Например, есть случаи, когда с пользой для дела можно использовать как прото-
тип, так и абстрактную фабрику. В других ситуациях порождающие паттерны
дополняют друг друга. Так, применяя строитель, можно использовать другие пат-
терны для решения вопроса о том, какие компоненты нужно строить, а прототип
часто реализуется вместе с одиночкой.
Поскольку порождающие паттерны тесно связаны друг с другом, мы изучим
:разу все пять, чтобы лучше были видны их сходства и различия. Изучение будет
нестись на общем примере - построении лабиринта для компьютерной игры.
Правда, и лабиринт, и игра будут слегка варьироваться для разных паттернов.
Иногда целью игры станет просто отыскание выхода из лабиринта; тогда у игрока
дет лишь один локальный вид помещения. В других случаях в лабиринтах мо-
гут встречаться задачки, которые игрок должен решить, и опасности, которые ему
дстоит преодолеть. В подобных играх может отображаться карта того участка
:абиринта, который уже был исследован.



Download 6,32 Mb.

Do'stlaringiz bilan baham:
1   ...   67   68   69   70   71   72   73   74   ...   273




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