简单工厂的最大优点是在工厂类中完成了必要的逻辑判断,根据客户端的条件动态实例化相关的类即可。
但是缺点也在这里,如果我要添加一个case选择,就需要修改原有的类,等于说对扩展开发了的同时也对修改开放了,违反了开放封闭原则。
工厂方法模式,通过抽象工厂的选择,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实力护延迟到其子类。
也就是本来添加一个case选择的修改从改工厂类,延迟到了修改客户端。
水果接口,水果工厂
苹果,苹果工厂。 梨子类似
在客户端代码中,我们先创建具体的工厂,然后调用getFurit方法获取具体的水果,在调用吃的方法。