CS309-OOAD OOAD Learning ( Design Pattern, Refactor) Design Pattern Strategy Pattern Observer Pattern