一. 概念
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。(工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。)
二. 分类
工厂模式在《Java与模式》中分为三类:
1)简单工厂模式(Simple Factory):不利于产生系列产品;
2)工厂方法模式(Factory Method):又称为多形性工厂;
3)抽象工厂模式(Abstract Factory):又称为工具箱,易于产生系列产品,但不利于产生新的产品;
三. 举例
注:这里我只说明思路,具体的代码,更详细的原理请参考尚学堂马士兵老师的视频教学点击这里
(1).简单工厂
假设现在有Car,Train,Plane等这些类,相应的CarFactory,TrainFactory,PlaneFactory里面会有产生对应对象的方法,利用工厂来生产对象,这种就是简单工厂。
(2).抽象工厂
抽象工厂模式是在工厂模式的基础上增加的一层抽象概念。如果比较抽象工厂模式和工厂模式,我们不难发现前者只是增加了一层抽象的概念。抽象工厂是一个父类工厂,可以创建其它工厂类。故我们也叫它“工厂的工厂”。
例如:现实生活中海尔公司会生产好多产品系列,一个系列可能会包括冰箱,洗衣机,电磁炉,另一个系列可能就会生产冰箱,吸尘器之类的。在总的工厂里面会有生产这一个系列,一个系列的工厂,在这每一个系列里面又会产生具体的对象。