现在我们假设一种场景,有个水果商人,他想买一些水果,包括苹果、香蕉、西红柿,这时候使用工厂模式我们只要像苹果工厂、香蕉工厂、西红柿工厂提出订单即可,水果自然就生产出来了,但是如果这时候,商人为了扩大档次,想要进口美国的上面三种水果,这时候如果还是使用工厂模式,就不得不向美国的三家水果工厂提出订单,如果这时候又要日本的水果,又要创建三个日本的水果工厂。这样下去,工厂的种类将是以三倍速度增长,类的种类扩大很多。但是如果使用抽象工厂模式,我只需要向某个国家的工厂提交订单,让他们帮忙生产他们国家的三种水果即可,这样设计是不是简单了很多呢。
其实抽象工厂模式就是对工厂模式的一种改进,增加了工厂生产产品的种类,减少了冗余代码,提高了程序效率。适应于产品族生产的场景。
类图如下:
事例代码如下:
运行结果如下: