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的反射很重要,一定要学会。不能偷懒。
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的反射很重要,一定要学会。不能偷懒。
相关文章推荐
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- Java设计模式之工厂模式(简单工厂模式和工厂方法模式)
- java与设计模式(三)-简单工厂模式(静态工厂)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- Java 可复用的面向对象的设计模式之 工厂模式Factory详解 :简单工厂模式 工厂方法模式 抽象工厂模式
- Java设计模式之工厂模式之简单工厂模式(通过反射)
- java之设计模式工厂三兄弟之简单工厂模式
- Java设计模式(三):工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- java设计模式之工厂方法模式以及简单工厂模式还有抽象工厂模式
- java设计模式之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- 【JAVA设计模式】简单工厂模式(Simple Factory Pattern)
- 浅析JAVA设计模式之工厂模式(二)
- 最简单的Java工厂设计模式样例
- java之设计模式工厂三兄弟之简单工厂模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- Java设计模式--工厂模式
- Java设计模式之工厂设计模式
- 常用Java设计模式系列(5)- 简单工厂、工厂方法模式和抽象工厂模式
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)