Несколько классических книг в электронном виде:
http://anatolix.naumen.ru/books.htm
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев