一、给我一句话概括
简单工厂:工厂类中,根据条件决定一个接口由哪个具体产品类来实现。
工厂方法:创建多个工厂类。各个工厂类中,都对应一个获得接口A实例的方法。用户决定使用哪个工厂。
抽象工厂:对工厂方法进行扩展。各个工厂类中,再增加一个获得接口B实例的方法。
提一下,多个工厂类都继承自同一个接口。
二、这是什么鬼
1、工厂方法这样折腾,有意思吗,玩我呢?你不就是简单工厂披了个马甲?
2、抽象工厂,你和工厂方法有啥区别,你多个功能就敢自立门户了?
三、原来如此
工厂方法多加一层工厂封装类的意义在于:1、用户并不想关心产品接口是怎么实现的,如果这个实现过程和逻辑比较复杂呢?将这个过程封装到工厂类中,别的地方也可以重用;2、接口的具体怎么实现,全部交给另一个人去做(他写的产品类)。如果添加一个新产品,那么他再添加一个工厂类和产品类,用户使用这个工厂类即可。
工厂类可以继承于某个接口,或是抽象类,工厂类已经对产品类的实现就行了封装,用户用它结合配置参数和反射实现动态创建,是很合理的。相比简单工厂是不太合适的。
代码底层,当产品类创建分支是固定或是其他类似的地方很少时,用简单工厂很合适。因为一旦增加分支,改的地方很少。如果不是,建议用工厂方法。
抽象工厂和工厂方法没有本质区别,是对工厂方法的扩展。当产品类,涉及到多个产品簇时,需要对同类的产品抽象为一个接口。工厂类中,可以定义多个返回具体产品的方法,自由组合。
每天一更,喜欢可以关注。
学会总结,你会发现另一个世界。