Билл Веннерс : Значит ли ценность шаблонов в том, что в реальном мире, когда я чувствую особую боль, я смогу найти известное решение?
Эрих Гамма : Я определенно рекомендую людям использовать шаблоны.Не начинайте сразу бросать шаблоны в дизайн, но используйте их по мере продвижения и поймите больше проблемы.Из-за этого мне действительно нравится использовать шаблоны по факту, рефакторинг к шаблонам. Один комментарий, который я увидел в группе новостей сразу после того, как шаблоны стали более популярными, был тем, кто утверждал, что в конкретной программе они пытались использовать все 23GoF шаблоны.Они сказали, что потерпели неудачу, потому что они могли использовать только 20. Они надеялись, что клиент перезвонит им, чтобы вернуться снова, так что, возможно, они смогут втиснуть в другой 3.
Попытка использовать все шаблоныплохо, потому что вы получите синтетический дизайн - умозрительный дизайн, обладающий гибкостью, которая никому не нужна.В наши дни программное обеспечение слишком сложное.Мы не можем позволить себе спекулировать, что еще это должно сделать.Нам нужно действительно сосредоточиться на том, что ему нужно.Вот почему я люблю рефакторинг к шаблонам.Люди должны понимать, что когда у них возникает особая проблема или запах кода, как люди называют это в наши дни, они могут перейти к своему набору инструментов шаблонов, чтобы найти решение.
Билл Веннерс : Это забавно, потому что мой второй вопрос состоял в том, что я заметил, что часто люди считают дизайн с наибольшим количеством шаблонов лучшим.На нашем семинаре по дизайну у меня есть участники, которые делают дизайн-проект, который они представляют другим в конце семинара.Практически всегда докладчики хотят показать, сколько шаблонов они использовали в своем дизайне, хотя я и пытаюсь сказать им, что цель - это простой и понятный API, а не победа в конкурсе «Я использовал самые шаблоны»,Я только что слышал, как вы говорили то же самое, что это неправильный способ думать о шаблонах.Если нет, каково правильное обоснование использования шаблонов в проектах?
Эрих Гамма : Многие шаблоны касаются расширяемости и возможности повторного использования.Когда вам действительно нужна расширяемость, шаблоны предоставляют вам способ достичь этого, и это круто.Но когда вам это не нужно, вы должны сохранять свой дизайн простым и не добавлять ненужных уровней косвенности.Один из наших девизов Eclipse - это то, что мы хотим расширения, где это важно.На самом деле, если вы заинтересованы в том, как мы используем шаблоны в Eclipse, я попытался описать их использование в главе книги «Вклад в Eclipse» [см. Ресурсы].В этой главе я использовал шаблоны проектирования для объяснения частей архитектуры Eclipse.
http://www.artima.com/lejava/articles/gammadp.html
google parts II - IV тоже!:) это отличные чтения