Design Pattern Notes