In college I took on a class on modern physics, in which we learned about special relativity. I was completely blown away by how different frames of reference could actually ob
This is the typical way most applications are laid out. I think of classes as forming a dichotomy - data container objects and strategy objects. Data container objects are carriers of information whilst strategies are encapsulations of various kinds of algorithms that can be applied on the data containers.
Command pattern is very close to the strategy pattern. Strategies also tend to manifest themselves as controllers, facades and the like.
Data Container objects manifest as entities, model objects, value objects, data transfer objects etc.
Gang of four is a good start but you might want to look into other classic design patterns treatises for further elaboration. Depending on your programming language predilection, you might want to consider more specific pattern books as well. Amazon has a ton of lists on design patterns.
I had talked about class dichotomy in this article.