您的位置:首页 > 编程语言 > Java开发

JAVA设计模式1 ---- 简单工厂模式 (以汽车工厂为例)

2013-02-26 16:01 351 查看
简单工厂模式的要素:
1 抽象产品: 有1个产品接口(抽象类)
2 具体产品: 有N件产品类来实现这个产品接口(或抽象类)
3 工厂角色: 有1个工厂 (Factory) 来生产产品(通过参数传递产品名称)

先来看Car这个接口:
public interface Car {
public void run();
public void stop();
}
很简单吧,注意接口是不能写实现的,否则不通过,它只是定义有什么功能,不管实现。
接下来创造2种 汽车, 克鲁兹(Cruze)和同悦(Tongyue)
//class Cruze
public class Cruze implements Car {

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("cruze run");
}

@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("cruze stop");
}

}
//class Tongyue
public class Tongyue implements Car{

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Tongyue run");
}

@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("Tongyue stop");
}

}
接下来创建一个汽车工厂,用于创建汽车:
public class CarFactory {

public static Car getInstance(String type)
{
Car mycar = null;
try {
//这里用了Java的反射
mycar = (Car)Class.forName("com.stephen.javatest03."+type).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return mycar;
}
}

好了, 现在这3项事情都做完了,可以使用它了。
public class JavaTest03 {
public static void main(String args[])
{
System.out.println("hi");

Car c = CarFactory.getInstance("Tongyue");
if(null != c)
{
c.run();
c.stop();
}
else
{
System.out.println("We cannot make this kind of car");
}
}
}

运行结果是:
hi
Tongyue run
Tongyue stop

备注:Java的反射很重要,一定要学会。不能偷懒。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: