GoF, Коплиена (мультипарадигменное проектирование), HTDP (только электронный вариант насколько я знаю), FPS (Functional Pattern System for Object-Oriented Programming)
Хотя бы просмотреть, чтобы знать, какие бывают и в каких ситуациях стоит применять. Потом по ходу дела можно уже вдаваться в детали. Особенно когда есть своя задача, на которую он может хорошо лечь. GOF-ом кстати ограничиваться не стоит, как минимум, википедия и по ссылкам от неё нужно сходить обязательно.
А вообще паттерны нельзя идеализировать, иногда они хороши, иногда они чересчур громоздки.
Если это "тактическое" проектирование, и Вас устроит объектно-ориентированный подход, и когда речь идет о взаимодействии нескольких классов, то читать надо GoF и Фаулера. Но главное в этом случае - писать много кода, понимать чем он плох, и пытаться его улучшить. Когда Ваш собственный код начнет Вам нравиться при его прочтении спустя полгода после написания - считайте, что цель достигнута и проектировать "в малом" Вы научились.
Если это проектирование сколь-нибудь масштабных систем, то об этом писал Грэйди Буч. Но гарантий, что прочитав его книгу, Вы станете software architect, - никаких ))
> Если это проектирование сколь-нибудь масштабных систем, то об этом писал Грэйди Буч. Но гарантий, что прочитав его книгу, Вы станете software architect, - никаких ))
Гради Буч очень хорошо пишет говняные книжки ни о чем. Никогда не читай книжек теоретиков.
ЗЫ: по сабжу Макконелл и Программист-прагматик. Еще можно рефакторинг Фаулера.
> Сколько ни пробовал осиливать, на паттернах гофовских постоянно засыпаю, что делать?
Ты нашел правильное применение для этой книжки. Это одно из самых худших чтив по программированию. Более нудно только Буч пишет. Но то настоящий мастер гавноделия.