首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

工场模式之-简单工厂模式

2012-09-20 
工厂模式之-简单工厂模式简单工厂模式:????? .目的??????? ?工厂模式就是专门负责将大量有共同接口的类实

工厂模式之-简单工厂模式

简单工厂模式:

?

???? .目的?
?????? ?工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。

我现在要做一个动物园管理系统。

????????? 首先抽象一个animal接口:

package factory.simpleFactory;

/**
?*
?* @author Administrator
?*/
public interface Animal {
??? void eat();

}
?????

?

??? 然后创建实现了animal接口的具体实现类:

?

??? 1 Tiger 类??

package factory.simpleFactory;

/**
?*
?* @author Administrator
?*/
public class Tiger implements Animal{

??? public void eat() {
??????? System.out.println("老虎会吃");
??? }

??? public void run(){
??????? System.out.println("老虎会跑");
??? }

}

?

?

2?? haitui类:

?

package factory.simpleFactory;

/**
?*
?* @author Administrator
?*/
public class Haitun implements Animal{

??? public void eat() {
????? System.out.println("海豚会吃");
??? }
??? public void swming(){
??????? System.out.println("海豚会游泳");
??? }


}

?

?

3?? yingwu类

package factory.simpleFactory;

/**
?*
?* @author Administrator
?*/
public class Yingwu implements Animal {

??? public void eat() {
??????? System.out.println("鹦鹉会吃");
??? }

??? public void flay() {
??????? System.out.println("鹦鹉会飞");
??? }
}

?

?

然后我要创建一个animal的工厂类。该工厂类根据传入的参数生成具体的animal子类实例。其中用到反射机制。

?

?

public class AnimalFactory {

??? public?? Animal newAnimal(String name) {

??????? Animal animal = null;
??????? try {
??????????? animal = (Animal) (Class.forName(name).newInstance());


??????? } catch (Exception ex) {
??????????? Logger.getLogger(AnimalFactory.class.getName()).log(Level.SEVERE, null, ex);
??????? }
??????? return animal;

??? }
}

?

?

?

好了,现在我们就可以来使用他们了。测试代码传上::

?

?

public class TestAnimal {

??? public static void main(String[] args) {

??????? AnimalFactory af = new AnimalFactory();
??????? Animal tiger = af.newAnimal("factory.simpleFactory.Tiger");
??????? tiger.eat();
??????? Animal haitun = af.newAnimal("factory.simpleFactory.Haitun");
??????? haitun.eat();

??????? Animal yingwu = af.newAnimal("factory.simpleFactory.Yingwu");
??????? yingwu.eat();


??? }
}

?

?

输出:

?

老虎会吃
海豚会吃
鹦鹉会吃

?

这就是简单工厂模式。用来大批量生产animal。

?

注意:如果要生产的实例又分好多种情况。如 tiger老虎又分为华南虎,华北虎等。怎么办。这时简单工厂模式就不能满足要求了。

?

要想解决这个问题。请看? 【工厂方法模式】

?

?

?

?

?

?

热点排行