Design Patterns : Factory and Factory method