工厂模式的来由
- 任何事物,都有其存在即合理的论证。我们也能从这个角度想到,我们的工厂模式能够成为重中之重的设计模式,一定有其存在的意义。
这里让我们来回顾简单模式的基本思路
饿汉模式:在创建对象时便实例化对象,就像一个饿汉,迫不及待的想要实例化对象,这样的坏处可想而知,因为实例化对象需要占用相当大的内存,而这些内存不一定会被使用。
懒汉模式:我们创建对象时,不急着实例化对象,而是使用一个方法来实例化对象,我们只需要调用该方法便可实例化对象,只是在多线程中会出现创建对象的不一致性。这里我们需要添加一些双重判定机制和volatile等关键字来确保一致性。
- 这里我们可以想象到,我们虽然在懒汉模式中,将创建对象交给了方法处理,但是倘若我们需要创建新的对象,就需要增加我们的方法等方式来达到目的,但是这种方式很麻烦,不如直接将我们的方法抽离成一个工厂。这种模式,相当于,我们需要买一部手机,不需要自己做一部手机,而是可以向工厂直接买一部手机,这个工厂直接来创造手机。
普通工厂模式
- 普通工厂模式的话,我们使用代码来学习这个模式:
- 上面是我们的普通模式工厂的一个类图,如上所示:
我们会创建一个汽车接口,并使用两个类来实现我们的接口,然后用一个工厂来实例化类,然后我们消费者只需要调用工厂类,并将我们需要创建的参数传入后,得到我们的实例化类。
- 普通工厂模式有缺点吗?
- 肯定会有缺点,这样的缺点来自于我们创建另一个汽车类,如奥迪时,我们需要增加汽车类继承汽车接口,并且通过生产工厂来实例化,所以我们还需要修改工厂类。
工厂模式
- 它是一个比普通工厂模式多了一些改进的模式,直接上类的关系图
- 可以看到,我们的工厂模式,将奔驰工厂和宝马工厂抽离出来,这样就可以在避免我们修改很多的类,这样只需要继续创建类即可。
抽象工厂模式
- 抽象工厂模式就比较复杂了,所以需要清晰的图来解读如下:
- 以上就是我们的抽象工厂模式,就是把我们的工厂抽离出来,这里使用了三个抽象类,分别是电脑、手机和产品工厂类,然后通过继承这三类,实现一个抽象的抽象类,从而实现抽象工厂的设计模式。
结语
- 本次的工厂模式学习起来不是很难,希望能够继续学习下去,我们不辜负光阴就行,一切都是最好的安排。