三种工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式。由简到繁,简单工厂模式是其中最简单,最容易理解的,它不属于二十三种设计模式。
简单工厂模式,又称静态工厂方法模式,它的整体思路就是将创建对象这一工作交给了一个工厂类去实现,它并没有像工厂方法模式那样抽象工厂类,而是仅仅将所有的产品进行了抽象,形成抽象产品类,所有的产品都在一个工厂类中生产,所以一旦需求改变,要增加新的产品,就需要修改工厂类,这不符合开闭原则,不具有很好的扩展性。
若以上文工厂方法模式中的例子,简单工厂模式只抽象了士兵的属性和定义,只有抽象产品类,而没有抽象工厂类。以下是网上一个买水果的例子,去水果摊买水果,简单工厂模式就是所有的水果都摆在一个水果摊上,买什么水果都在这一个水果摊买,一旦要进新品种的水果就需要动该水果摊摊位;而工厂方法模式则是一种水果一个水果摊,买什么水果去什么水果摊,一旦进新品种水果,直接增加一个新的水果摊,不需要改动原来的摊位。
以下图1是抽象产品类,抽象了产品的属性定义,图2、3是具体产品类,实现了两种具体的水果,图4是工厂类:
由上图可知如果需要增加新的水果,需要修改工厂类,这对扩展来说很不方便。但是,简单工厂也分离了创建者和调用者,调用时仅调用工厂类,传入参数即可得到对象。一般简单工厂类是在创建的类不多、扩展性不强的情况下使用。