java实现简单工厂模式
2013-07-08 09:11
447 查看
实例1
实例二:
对比三个实例:
实例一,虽然实现了简单工厂,但每次只能得到一种汽车,如果我们想换一种,就得修改工厂,太不方便,而实例二则改变了这种情况,便得我们可以按照我们的需要更换汽车,但我们所更换的汽车必须是实现类中有的,如果我们想要增加一种汽车的时候,我们还是得更改工厂,通过改进,实例三利用反射机制,得到汽车类型,这样当我们需要增加一种新的汽车时,就无需要再修改工厂,而只需要增加要实现的类即可。也就是说要增加什么样的汽车直接增加这个汽车的类即可,而无需改变工厂。从而达到了工厂分离的效果。
本文来自:http://www.blogjava.net/jzgl-ever/archive/2008/07/26/217704.html
package org.jzkangta.factorydemo01; //定义接口 interface Car{ public void run(); public void stop(); } //具体实现类 class Benz implements Car{ public void run(){ System.out.println("Benz开始启动了。。。。。"); } public void stop(){ System.out.println("Benz停车了。。。。。"); } } //具体实现类 class Ford implements Car{ public void run(){ System.out.println("Ford开始启动了。。。"); } public void stop(){ System.out.println("Ford停车了。。。。"); } } //工厂 class Factory{ public static Car getCarInstance(){ return new Ford(); } } public class FactoryDemo01 { public static void main(String[] args) { Car c=Factory.getCarInstance(); c.run(); c.stop(); } }
实例二:
package fac; //定义接口 interface Car{ public void run(); public void stop(); } //具体实现类 class Benz implements Car{ public void run(){ System.out.println("Benz开始启动了。。。。。"); } public void stop(){ System.out.println("Benz停车了。。。。。"); } } class Ford implements Car{ public void run(){ System.out.println("Ford开始启动了。。。"); } public void stop(){ System.out.println("Ford停车了。。。。"); } } //工厂 class Factory{ public static Car getCarInstance(String type){ Car c=null; if("Benz".equals(type)){ c=new Benz(); } if("Ford".equals(type)){ c=new Ford(); } return c; } } public class FactoryDemo02 { public static void main(String[] args) { Car c=Factory.getCarInstance("Benz"); if(c!=null){ c.run(); c.stop(); }else{ System.out.println("造不了这种汽车。。。"); } } } 实例三: interface Car{ public void run(); public void stop(); } class Benz implements Car{ public void run(){ System.out.println("Benz开始启动了。。。。。"); } public void stop(){ System.out.println("Benz停车了。。。。。"); } } class Ford implements Car{ public void run(){ System.out.println("Ford开始启动了。。。"); } public void stop(){ System.out.println("Ford停车了。。。。"); } } class Toyota implements Car{ public void run(){ System.out.println("Toyota开始启动了。。。"); } public void stop(){ System.out.println("Toyota停车了。。。。"); } } class Factory{ public static Car getCarInstance(String type){ Car c=null; try { c=(Car)Class.forName("org.jzkangta.factorydemo03."+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 c; } } public class FactoryDemo03 { public static void main(String[] args) { Car c=Factory.getCarInstance("Toyota"); if(c!=null){ c.run(); c.stop(); }else{ System.out.println("造不了这种汽车。。。"); } } }
对比三个实例:
实例一,虽然实现了简单工厂,但每次只能得到一种汽车,如果我们想换一种,就得修改工厂,太不方便,而实例二则改变了这种情况,便得我们可以按照我们的需要更换汽车,但我们所更换的汽车必须是实现类中有的,如果我们想要增加一种汽车的时候,我们还是得更改工厂,通过改进,实例三利用反射机制,得到汽车类型,这样当我们需要增加一种新的汽车时,就无需要再修改工厂,而只需要增加要实现的类即可。也就是说要增加什么样的汽车直接增加这个汽车的类即可,而无需改变工厂。从而达到了工厂分离的效果。
本文来自:http://www.blogjava.net/jzgl-ever/archive/2008/07/26/217704.html
相关文章推荐
- java 枚举和反射 实现简单的工厂模式
- 一个java实现的简单工厂模式
- 软件设计模式之简单的工厂模式(JAVA实现)
- Java 实现简单工厂模式
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- Java实现简单的工厂模式
- 设计模式之—简单工厂方法(StaticFactory )-Java实现
- 大话设计模式1 简单工厂模式 的java代码实现
- 设计模式-简单工厂设计模式与策略模式之java实现
- 设计模式-简单工厂设计模式与策略模式之java实现二
- java简单工厂设计模式实现计算器
- 追MM与设计模式的JAVA实现-简单工厂方法
- 简单工厂(Simple Factory)模式的Java实现[00原创]
- Java设计模式之工厂模式的简单实现
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- 设计模式之简单工厂模式:c++实现
- Java23种设计模式之-----简单工厂模式
- GOF23设计模式之简单工厂的实现
- 1、简单工厂模式——反射+Properties实现计算器
- java 设计模式 学习笔记(1) - 简单工厂模式