1. 所有的工厂都是用来封装对象的创建
2. 把对象的创建委托给子类,子类实现工厂方法来创建对象
3. 对象的创建被实现在工厂接口所暴露出来的方法中
4. 较少类的依赖,促进松耦合
5. 工厂发放允许将实例化延迟到子类中进行
6. 针对抽象编程,不针对具体类的实现