工厂模式:属于创建型模式,工厂就是生产对象的地方。
工厂模式分为:简单工厂模式,工厂方法模式,抽象工厂模式。
简单工厂模式
工厂类负责创建的对象较少的情况下使用,客户只需要传入工厂类的参数,对于如何创建对象不需要关心。
详细代码:
我们想要生产鞋子,我们就来一个鞋子的抽象类(接口也行)
生产什么鞋子呢?有阿迪的,那就来一个阿迪
有耐克的,来一个耐克
有李宁的
好,这时候我们想买鞋子,找到一个生产鞋子的工厂(简单工厂类),下面是个工厂类
你来到工厂你想要一双nike ,你需要告诉工厂你想要什么(传一个参数给它),它就会给你想要的。
这就是一个简单工厂模式流程,简单工厂类有一个重要的create()方法,利用if或者switch判断你的入参创建对象并返回。
简单工厂模式扩展性差,当我需要增加一个新的品牌的鞋子,它需要修改工厂方法。
工厂方法模式
工厂方法模式就是把简单工厂中具体的工厂类 分为了两层:抽象工厂类和具体的工厂类
详细代码:
抽象工厂类:
具体的工厂类:
具体使用的时候:
可以看出工厂模式把一个产品的实例化放到了具体的工厂中,这样以后需要加入新的产品的时候
只需要增加相应的类就行(要是去掉一个产品就删除相应的工厂类),这样不用去修改原有的代码。
但是这样做随着产品越来越多 工厂类也越来越多。
抽象工厂
上面介绍的工厂模式是横向的增加同类型产品,当你需要纵向的增加不同类型的产品放到一个类中使用的时候需要用到抽象工厂。
详细代码:
一个抽象的大工厂,里面不仅仅生产鞋子,还生产衣服,伞。。。
具体的工厂
使用如下: