1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-thinking-in-java-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
16.9 总结.md 6.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.03.2025 09:15 d56454c

16.9 Заключение

На первый взгляд, дизайн, включающий файл TrashVisitor.java, может создать впечатление низкой эффективности из-за большего количества кода по сравнению с ранними версиями. Однако ключевой задачей является использование различных паттернов проектирования для достижения конкретной цели. Паттерны проектирования особенно полезны для разделения "всего, что меняется", от "всего, что остается неизменным". В данном контексте "все, что меняется" может представлять множество видов изменений. Изменения могут происходить из-за перехода программы в новую среду или изменения текущей среды (например, "пользователь хочет добавить новый геометрический объект в диаграмму, отображаемую на экране"). Также изменения могут возникнуть вследствие постоянного совершенствования основного кода, как это описано в данной главе. Хотя ранее приведенные примеры акцентировали внимание на добавлении нового типа Trash в систему, файл TrashVisitor.java позволяет легко добавлять новые функциональные возможности без влияния на структуру Trash. Несмотря на увеличение объема кода в Visitor, добавление новых функций требует минимальных усилий. Если такие действия выполняются регулярно, то наличие большего количества кода вполне оправдано.Обнаружение последовательностей изменений — это нечто необычное; аналитики обычно не могут предвидеть такие изменения до завершения начального этапа дизайна программы. Иногда необходимые данные становятся доступными только после продвижения проекта к более позднему этапу его реализации. Иногда становится очевидным, что требуется более глубокое понимание или менее явная потребность в собственном программном обеспечении. При добавлении новых типов (это один из самых важных аспектов "примера утилизации"), можно заметить, что специфическая структура наследования нужна только при входе в режим обслуживания системы и начале её расширения.Изучение паттернов проектирования помогает осознать одно из наиболее важных понятий, которое эта книга постоянно подчеркивает — полиморфизм является всей сутью объектно-ориентированного программирования (ООП) — и это полностью изменило его значение. Другими словами, сложно "добиться" полиморфизма; но как только он достигнут, необходимо попытаться адаптировать все свои дизайны к определенному шаблону. Цель паттернов проектирования заключается в том, чтобы показать, что "объектно-ориентированное программирование (ООП) не сводится только к полиморфизму". Важнее всего то, как ООП позволяет отделить то, что будет меняться, от того, что должно остаться неизменным. Полиморфизм является особенно важным средством достижения этой цели. Если язык программирования предоставляет прямую поддержку полиморфизма, это делает его еще более ценным (в связи с прямой поддержкой нет необходимости самостоятельно реализовывать полиморфизм, что экономит значительное количество времени и усилий).Однако паттерны проектирования также демонстрируют ряд других общих подходов к достижению основной цели. Когда вы знакомитесь с этими паттернами и осваиваете их использование, вы можете создавать более инновационные дизайны. Из-за огромного влияния книги "Design Patterns" на программистов, они начали активно искать другие паттерны. Со временем количество таких паттернов будет увеличиваться. Jim Coplien (автор сайта http://www.bell-labs.com/~cope) рекомендует следующие сайты с ценными описаниями паттернов:http://st-www.cs.uiuc.edu/users/patterns

http://c2.com/cgi/wiki

http://c2.com/ppr

http://www.bell-labs.com/people/cope/Patterns/Process/index.html

http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns

http://st-www.cs.uiuc.edu/cgi-bin/wikic/wikic

http://www.cs.wustl.edu/~schmidt/patterns.html

http://www.espinc.com/patterns/overview.html

Кроме того, обратите внимание на ежегодную конференцию PLOP по паттернам проектирования, которая выпускает множество научных статей. Третья конференция состоялась в конце 1997 года, а все материалы были опубликованы издательством Addison-Wesley.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-thinking-in-java-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-thinking-in-java-zh.git
oschina-mirror
wizardforcel-thinking-in-java-zh
wizardforcel-thinking-in-java-zh
master