通过多态实现,抽象类可以是

1、接口interface   implements,

2、抽象类abstract   extends

具体工厂类new具体产品的方法,

1、可以使用静态方法,由工厂类名字调用.静态方法()返回new出来的具体产品,

2、也可以new工厂对象,调用对应的方法new出来具体产品


一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

工厂模式在《Java与模式》中分为三类:
1)简单工厂模式(Simple Factory):不利于产生系列产品;

2)工厂方法模式(Factory Method):又称为多形性工厂;

3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品;
             这三种模式从上到下逐步抽象,并且更具一般性。
            
二、简单工厂模式
只有一个具体工厂
一个具体工厂生产new多个具体产品,根据不同的条件new和return

简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。

在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。
        先来看看它的组成:

         1) 具体工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。

         2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。

         3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
 //抽象产品(一个)
public interface Car{
      public void drive();
}

//具体产品(多个)
public class Benz implements Car{
      public void drive() {
         System.out.println("Driving Benz ");
      }
}

public class Bmw implements Car{
      public void drive() {
       System.out.println("Driving Bmw ");
      }
}
。。。(奥迪我就不写了:P)

//具体工厂类(一个)
public class Driver{
            //工厂方法.注意 返回类型为抽象产品角色
             public static Car driverCar(String s)throws Exception{
                   //判断逻辑,返回具体的产品角色给Client
                   if(s.equalsIgnoreCase("Benz"))
                        return new Benz();
                   else if(s.equalsIgnoreCase("Bmw"))
                            return new Bmw();
                                 ......   
                           else throw new Exception();
             。。。

//测试类 ,  欢迎暴发户出场......
public class Magnate{
      

相关文章: