The State design pattern could be considered a state-sensitive Smart Proxy (Chapter 7). It evaluates the state it's in and determines whether the current object is suitable to perform the requested operations. If not, it delegates the requests to the qualified object. All the while, the client remains incognizant. As far as the client is concerned, the object it is referencing is doing all the work.