Java设计模式----工厂模式(二)

来源:互联网 发布:淘宝主图psd 编辑:程序博客网 时间:2024/06/05 18:17

在工厂模式(一)中提到的问题:新增SuperCar类是必然的,能否不修改工厂类就能完成所需功能?

  • 工厂模式的实现
  • 工厂模式与简单工厂模式的区别

工厂模式的实现

实现步骤

1、定制抽象产品接口,如ICar
2、定制其具体子类,如类TopCar(高档车)、MidCar(中档车)、LowCar(低档车)
3、定制抽象工厂类(或接口),如AbstractFactory,提供一个create()抽象方法
4、定制具体工厂子类,如TopFacyory、MidFactory、LowFactory

//定义小汽车接口:ICar.javapublic interface ICar{    //由于工厂模式仅关系对象的创建,为说明方便,无需定义方法}//下面定义高、中、低档具体的小汽车//高档汽车:TopCar.javapublic class TopCar implements ICar {}//中档汽车:MidCar.javapublic class MidCar implements ICar {}//低档汽车:LowCar.javapublic class LowCar implements ICar {}//定义抽象工厂AbstractFactory.javapublic abstract class AbstractFactory{    public abstract ICar create();}//定义高档小汽车工厂public class TopFactory extends AbstractFactory{    public ICar create (){        return new TopCar();        }}//定义中档小汽车工厂public class MidFactory extends AbstractFactory{    public ICar create (){        return new MidCar();        }}//定义低档小汽车工厂public class LowFactory extends AbstractFactory{    public ICar create (){        return new LowCar();        }}//测试程序:CarTest.javapublic class CarTest {    public static void main(String[] args) {        AbstractFactory obj = new TopFactory();//多态创建高档工厂        ICar car = obj.create();              //获得高档工厂中的小汽车对象    }}

如果现在又新增了 一个超高档次的汽车,在工厂模式下,需要做的工作有:
1、新增ICar的实现类SuperCar
2、接着定义SuperFactory,而不需要修改以前已经写好的东西。

工厂模式与简单工厂模式的区别

1、工厂模式将简单工厂模式中具体的工厂类划分为两层:抽象工厂层+具体工厂子类层。
2、工厂模式更易于软件的二次开发,当需求发生变化时,只需要增加、删除相应的类,而不是修改已有的类。

一般来说,简单工厂、工厂模式是单产品系的,比如只能制造小汽车;如果既要制造小汽车又要制造公共汽车,就需要用到抽象工厂(多产品系的)。
继续关注Java设计模式—-工厂模式(三)

0 0