什么是工厂方法
截图来自参考文章
静态方法
一个类的静态方法,就是只要是这个类的对象,”对象.静态方法”,调用的都是同一个方法:
比如 class A有个静态方法 a();
第一个类A的实例 a1 = new A();
第二个类A的实例 a2 = new A();
这个时候 a1.a()和a2.a()执行的根本就是同一个类方法。
也就是说,静态的意思,是这个类的对象共享的,只要是这个类的对象,都有权利调用。
理由
如上图,如果factoryMethod为静态方法:
定义ConcreteFactory,
那么使用的时候,我们希望通过将对象的创建延迟到子类
Factory f = new ConcreteFactory();
这个时候,我们想要调用factoryMethod完成某一个具体对象的创建
f.factoryMethod();
这个时候,调用的是 Factory中的factoryMethod()方法
而不是ConcreteFactory中的factoryMethod()方法
因为f是一个Factory类的实例
而Factory的factoryMethod()方法,根本就什么也不做,全靠子类
所以factory的方法,不能为静态方法。