HotDrink.prepare() ยท final โ€” order locked
1boilWater()๐Ÿ”ฉ fixed in HotDrink
โ–ผ
2brew()filled by subclass
abstract โ€” pick a subclass
โ–ผ
3pourInCup()๐Ÿ”ฉ fixed in HotDrink
โ–ผ
4addExtras()filled by subclasshook
abstract โ€” pick a subclass
the cup
ยท
empty
One skeleton, two drinks
Pick ๐Ÿต Tea or โ˜• Coffee โ€” the skeleton stays put; only the dashed steps get filled.
โ–ธ Pick a drink, run prepare(), then untick the hook on step 4 and run again.