add decorator pattern, simple factory, design principle,factory method,prototype,proxy