In short: go component-based. Narrower interfaces, more orthogonality, easy to change behavior at runtime.
evidence:
http://www.gamearchitect.net/Articles/GameObjects1.html
http://web.archive.org/web/20030222160835/http://www.incagold.com/pipermail/sweng-gamedev/2001-February/002883.html
http://www.gotw.ca/publications/mill06.htm
Blog at WordPress.com.