Java设计模式之简单工厂模式

简单工厂模式属于类的创建模式,又叫做静态工厂方法模式,它通过专门定义一个工厂类来负责创建其他类的示例,被创建的实例通常具有相同的父类或接口。在简单工厂模式中,工厂类是整个模式的关键所在,它包含必要的判断逻辑,能够根据外界给定的信息,来决定应该创建哪个具体类的对象。用户在使用的时候直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。

下面是一个简单的例子:

(1)Fruit接口

// 文件名:Fruit.java
package net.yedward.test;

public interface Fruit {
  // 定义一个水果接口,接口内有一个get()方法,用于输出当前水果的名称
  public void get();
}

(2)Fruit接口的两个实现类:Apple、Banana

// 文件名:Apple.java
package net.yedward.test;

public class Apple implements Fruit {

  @Override
  public void get() {
    System.out.println("This is Apple");
  }

}
// 文件名:Banana.java
package net.yedward.test;

public class Banana implements Fruit {

  @Override
  public void get() {
    System.out.println("This is Banana");
  }

}

(3)FruitFactory工厂类

// 文件名:FruitFactory.java
package net.yedward.test;

// 定义一个FruitFactory工厂类,用于生成各种fruit
public class FruitFactory {
  public static Fruit getFruit(String fruitType)
      throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    return (Fruit) Class.forName(fruitType).newInstance();
  }
}

(4)Main方法,主测试程序

package net.yedward.test;

public class Main {
  public static void main(String[] args)
      throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    Fruit apple = FruitFactory.getFruit("net.yedward.test.Apple"); // 记得加上包名,不然会报错ClassNotFound
    apple.get();
    Fruit banana = FruitFactory.getFruit("net.yedward.test.Banana");
    banana.get();
  }
}

上面就是一个简单的利用水果工厂实现不同的水果的生成。

本文标题:Java设计模式之简单工厂模式

本文链接:http://yedward.net/?id=270

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章