Categories of Responsibilities
Constructor An operation that creates a new instance of
a class
Copy constructor An operation that creates a new
instance by copying an existing instance, possibly
altering its state in the process
Transformer An operation that changes the state of an
object
Observer An operation that allows us to observe the
state of an object without changing it
Iterator An operation that allows us to process all the
components of an object one at a time