# Design Pattern (3) ###### tags: `GLA Notes & Slides` Extended example notes for AP. ## Composite Pattern See [here](https://hackmd.io/Ku0tZH6URwWL1HYys2mLYw#Composite). ## Decorator * It addes behaviours to individual objects without inheriting from them. :::spoiler Example: Coffee Maker * This example is simplified from the example of the Head First book. ```java abstract class Beverage { public abstract double cost(); } abstract class CondimentDecorator extends Beverage { } class Espresso extends Beverage { @Override public double cost() { return 1.99; } } class HouseBlend extends Beverage { @Override public double cost() { return .89; } } class Mocha extends CondimentDecorator { Beverage beverage; public Mocha(Beverage beverage) { this.beverage = beverage; } @Override public double cost() { return .20 + beverage.cost(); } } class CoffeeMaker { public static void main(String[] args) { Beverage espresso = new Espresso(); System.out.println(espresso.cost()); Beverage mocha = new Mocha(espresso); System.out.println(mocha.cost()); } } ``` ::: ## Observer See [here](https://hackmd.io/WxVlNJb1S4OPAVKzhSsRWw?view#Observer).