本文标题:Java设计模式之简单工厂模式
本文链接:http://yedward.net/?id=270
如需转载请联系听云College团队成员阮小乙,邮箱:ruanqy#tingyun.com
简单工厂模式属于类的创建模式,又叫做静态工厂方法模式,它通过专门定义一个工厂类来负责创建其他类的示例,被创建的实例通常具有相同的父类或接口。在简单工厂模式中,工厂类是整个模式的关键所在,它包含必要的判断逻辑,能够根据外界给定的信息,来决定应该创建哪个具体类的对象。用户在使用的时候直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。
下面是一个简单的例子:
(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(); } }
上面就是一个简单的利用水果工厂实现不同的水果的生成。