各类工厂方法总结

各类工厂方法总结

很久之前就对工厂方法有过了解了,但是当时一直有个问题,感觉工厂方法让代码的结构更加复杂,不是很清楚它存在的意义,对于“why”没有搞明白自然就学不好。如今重新看一下工厂方法。

概念

简单工厂:工厂类中,根据条件决定一个接口由哪个具体产品类来实现。

工厂方法:创建多个工厂类。各个工厂类中,都对应一个获得接口A实例的方法。用户决定使用哪个工厂。

抽象工厂:对工厂方法进行扩展。各个工厂类中,再增加一个获得接口B实例的方法。

提一下,多个工厂类都继承自同一个接口。

为什么需要工厂方法?

工厂方法多加一层工厂封装类的意义在于:1、用户并不想关心产品接口是怎么实现的,如果这个实现过程和逻辑比较复杂呢?将这个过程封装到工厂类中,别的地方也可以重用;2、接口的具体怎么实现,全部交给另一个人去做(他写的产品类)。如果添加一个新产品,那么他再添加一个工厂类和产品类,用户使用这个工厂类即可。

工厂类可以继承于某个接口,或是抽象类,工厂类已经对产品类的实现就行了封装,用户用它结合配置参数和反射实现动态创建,是很合理的。相比简单工厂是不太合适的。

代码底层,当产品类创建分支是固定或是其他类似的地方很少时,用简单工厂很合适。因为一旦增加分支,改的地方很少。如果不是,建议用工厂方法。

抽象工厂和工厂方法没有本质区别,是对工厂方法的扩展。当产品类,涉及到多个产品簇时,需要对同类的产品抽象为一个接口。工厂类中,可以定义多个返回具体产品的方法,自由组合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值