简单工厂
此时使用工厂将动物的实例化过程就行了封装,客户端只需要取得对象即可,不在关注对象的实例化工程
缺点:如果客户端将字符串打错,就不能实例化对象,最终出现NullPointException异常。为解决这个问题提出了方法工厂。
方法工厂
使用了工厂方法后不需要再去传递字符串参数,不会出现空指针异常
缺点:如果扩展了Animal的子类,则需要在工厂中增加新的方法,改变了工厂的代码,违背了“开闭原则(扩展开放,修改关闭)”。于是提出了抽象工厂模式。
抽象工厂
由此可见,当我们需要增加一个子类时,只需要增加该子类的具体工厂类,原有的具体子类工厂类不需要做任何改动。
总结
工厂模式降低了代码的耦合度,将对象的创建过程封装了,客户端只需要直接调用工厂的方法取得对象,不需要知道实例化对象的整个过程。但以上代码还是不够简洁,后面Java使用反射解决了这种繁杂的代码。
原文:https://www.cnblogs.com/Jbegan/p/13022170.html