定义一个创建对象的工厂类,这个类负责封装实例化对象的细节
定义一个创建对象的抽象方法,由子类来决定要实例化的对象,将对象的实例化延迟到子类
定义一个接口用来创建相关的或者具有依赖性的对象簇
将实例化对象的细节提取出来,放到工厂角色,由工厂角色负责具体的创建细节。