This article uses the phrase "maintaining state", but it's really talking about controlling the visibility of instance variables, and on a higher level using interfaces to provide loosely-coupled contracts for the behavior of classes. Using the same ideas within classes to "shield" instance variables from internal code is a good practice.<p>While the examples are in Ruby, this is the kind of design philosophy that is typically applied to Java development. Perhaps there's some hope for Ruby after all. :)