工厂方法模式 中的 工厂方法不能为静态方法

为什么不能为静态方法

什么是工厂方法

在这里插入图片描述
截图来自参考文章

静态方法

一个类的静态方法,就是只要是这个类的对象,”对象.静态方法”,调用的都是同一个方法:
比如 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的方法,不能为静态方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值