Document
- state: State
+ publish()
+ edit()
«interface»
State
+ publish(doc)
+ edit(doc)
Draft
+ publish()
Moderation
+ publish()
Published
+ publish()
A state object per state
1interface State { void publish(Document d); }2class Draft implements State { ... }3class Moderation implements State { ... }4class Published implements State { ... }5class Document { State state; void publish(){ state.publish(this); } }
State
Documentdelegates to state