NewsAgency
- subs: List
+ subscribe(s)
+ publish(news)
«interface»
Subscriber
+ update(news)
EmailSub
+ update()
SmsSub
+ update()
AppSub
+ update()
The wiring
1interface Subscriber { void update(String news); }2class NewsAgency { List<Subscriber> subs; void publish(String n){...} }3class EmailSub implements Subscriber { ... } // + SmsSub, AppSub
State
knowsSubscriber interface only