Java中除去有设计原则之外,还有23中设计模式。
这些模式都是前辈们一点一点积累下来,一直在改进,一直在优化的,而这些设计模式可以解决一些特定的问题。
并且在这些模式中,可以说是将语言的使用体现的淋漓尽致。
那我们今天要学习 创建型模式 中的 工厂模式 !
工厂模式:
先来说说什么是工厂模式:
工厂模式,顾名思义,就是有一个工厂,你呢,就是厂长,你需要什么,就告诉工厂,造个什么,然后造好之后拿来用。这就是通俗的理解。
这个工厂模式呢,也是一种创建对象的最佳方式之一,我们在创建对象的时候,不会对客户暴露我们是怎么创建的,而是通过同一个接口来获取。
工厂模式的实现:
我们呢,先来说一下这个的实现,稍后我来说这个的优点啊、缺点等等。
第一步,打开eclipse,创建一个包。com.java.demo.factory。
因为我今天想吃包子和饺子,所以我们创建一个面粉厂!
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB10MNR0T3tGVOBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4QzNwUDNykDM1ATMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
创建好之后,我们先暂时放着,不动,然后创建面粉这个接口!注意,是接口!!!
然后接口中我们写一个创建面团的方法,这个方法最后让这个具体的东西去实现(后面就会明白我说的啥)。
有了这个面粉的接口之后,我们来创建这个具体的东西,去实现这个接口。
我们创建一个饺子,然后实现这个接口。
有了饺子之后,我们再弄个面条,也实现这个接口。
现在呢,有饺子,还有面条啦,我们再反过来,打开刚刚创建的面粉厂。
如果说,告诉工厂的是饺子,我们就创建饺子面团,如果是面条,那么就是面条的面团。
然后来测试。我们写一个FlourFactoryTest,然后实例化这个工厂。
然后,我们告诉工厂,让他弄啥面。
是不是,这样我们就让这个工厂创建了这个做饺子的面团。相同的,面条也可以。
这样,我们的这个简单工厂模式就创建好了。如果我们还想创建其他的东西,比如说披萨,只需要创建披萨类,让这个披萨实现面粉类,再告诉工厂可以生产披萨了,就可以了。
工厂模式的优缺点:
先来说优点,我们就用上面的例子:
1. 我们要创建啥,只需要知道名字就可以,不需要知道其他的东西。
2. 扩展能力好,想增加其他的面粉类食品,只需要扩展一个类,实现面粉,并告诉工厂就好。
知道了优点之后我们再来说缺点:
每一次加了一个东西,都需要增加一个具体类、还有工厂的一个实现。最后增加了一大堆。这样就复杂了,我们还得去维护这个工厂。这就不好了。
工厂模式在哪里可以用到:
简单说一个,数据库。
关系型数据库中,我们常用的有Orcale、DB2、Mysql、Sql Server等等,我们用Java做连接的时候,就是用的工厂模式这种思想,想连接那种数据库,就更换那种数据库的方言、和驱动包就好,其他的呢,我们不用操心。
这个等我后面更新框架这一栏的时候,我们来说这个思想!