工厂方法和抽象工厂的区别?
看了书我感觉就是工厂方法只能创建一种抽象产品,而抽象工厂则不受限制,但是,为什么工厂方法为什么就不能创建多种抽象产品呢?
[解决办法]
工厂方法是创建一种产品的,而抽象工厂因为在工厂方法的基础上又抽象了一层,所以可以创建一系列产品(多种产品)
[解决办法]
额,工厂方法模式只有一个抽象产品类,而抽象工厂模式可以有多个产品类。
[解决办法]
这样说吧,简单的情况下,用工厂方法模式,
如果需要很多个工厂方法模式的时候,就用抽象工厂模式,不然在表现上非常不给力。
只要你弄清楚了产品层次结构和产品族,那么两者的区别就能理解了。
当然正如你说的,为啥我不直接用抽象工厂呢,这个当然是可以的。
如果你觉得你的业务以后非常可能扩展到复杂的产品层次结构,那么一开始打算使用工厂方法的时候,
你就可以直接使用抽象工厂。
当然了,如果产品就一个层次,没有产品族的概念,那么使用抽象工厂你会不会觉得杀鸡用牛刀了呢?这并不是说牛刀不能杀鸡。
请记住一个道理:代码多,类多代表风险多。所以能少的时候不要多。这就是为什么使用工厂方法模式的时候不使用抽象工厂,不是因为不能使用,而是不建议使用。