Well, I am not aware of any such books that also teach coding theory. Coder (or I should say the developer) automatically learns this during his/her practical sessions (not the college lab sessions, but when he/she actually starts coding).
You can still search for the "Java Best Practices" which will guide you the general pattern everyone follows. But don't stick to them. They are guidelines, and useful also, but you can also create your own pattern.