在设计模式中,工厂模式和抽象工厂模式可以说是运用的最多的,先讲讲他们的区别:
工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类
抽象工厂模式:为一组相关或相互依赖的对象提供一个接口,不需要显示指定他们的类,每个生成的工厂按照工厂模式提供对象
总的来说:工厂模式适用于只有一个产品等级的情形,而抽象工厂模式适用于具有多个产品等级的情形
举个例子:小王开了家服装店卖衣服,开始时没经验也没本钱,于是就只卖一种衣服。由于只卖一种衣服,所以无需分类,直接采用工厂模式即可。后来小王赚钱了,于是就想扩大商铺规模,采购了许多不同种类的衣服,为了方便管理以及顾客挑选,这时就需要将各种衣服进行分类,所以适合采用抽象工厂模式。如下图所示:
工厂模式:
抽象工厂模式:
由上图可知,工厂模式下由一个工厂负责生产各类服装;在抽象工厂模式下有一个超级工厂(服装工厂)负责创建不同产品的工厂,不同产品的工厂负责创建不同类型的服装