首先是简单工厂,它其实不是一种设计模式,更像是一种编程习惯。
假设我们需要生产一部手机,这个手机可以是2017年的新款,也可以是2018年的新款,根据我们的需要,生产出手机。所有的手机都继承一个手机基类,我们可以把手机对象创建的过程提取出来,创造一个工厂从工厂中根据需求返回需要的手机。
代码如下
测试
输出结果
简单工厂把对象的创建和使用区分开来,让整个程序结构更明确。但是工厂中聚合所有的手机创建过程,每次添加一款手机,就需要改动工厂类。
当然手机不可能只有一个公司的,现在有大米公司和香蕉公司两个公司的手机,如果我需要大米公司2019款和香蕉公司2017款的手机,该如何实现呢?这时候就用到了工厂模式。
首先是创建手机的基类,所有的手机都继承于它,然后是创建手机工厂基类,大米和香蕉两个公司的手机工厂类都继承它,然后各自实现制造手机的方法。
代码如下
测试
输出
如果我们需要蓝绿公司2018年款的手机时,因为基类已经定义好了方法,只需要再创建蓝绿公司的手机工厂就能够实现。