На первый взгляд, дизайн, включающий файл 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://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 )