new创造对象的方式实际本质是面向实现编程,不是面向接口编程。代码绑着具体的实现会使代码更加脆弱。
工厂模式解决的一般是对象的实例化问题。把new的放在代码中,不利于拓展维护。
变化的部分和不变的部分。类的具体实例化抽出来,放置在一个类中。维护扩展运行。耦合程度降低。
简单工厂模式:定义一个创建对象的类,由这个类封装实例化对象的行为。把原来的代码取出来封装。
对象的实例化放在主程序中,依赖性影响不好。
工厂模式:定义了一个创建对象的抽象方法。由子类决定要实例化的类。工厂方法模式将对象的实例化推到子类。
抽象工厂模式:定义了一个接口用于创建相关的或有依赖关系的对象族,无需明确指定具体类
依赖抽象原则:
变量不要持有具体类的引用。
不要让类继承具体类,让它继承接口或抽象类。
不要覆盖基类中已经实现的方法。