工厂类分离与java反射机制

黙言-在路上

奋斗

 
 
 
 

java 简单工厂类

2012-04-22 15:44:07|  分类: java |  标签:java工厂类  简单工厂类  |举报|字号 订阅

 
 

简单工厂模式需要由以下角色组成:
      接口
                        接口的实现类(简单工厂模式里面的具体产品角色)
                        工厂

注意对比以下三个实例的不同
实例1:

工厂类分离与java反射机制package org.jzkangta.factorydemo01;
工厂类分离与java反射机制//定义接口
工厂类分离与java反射机制interface Car{
工厂类分离与java反射机制    public void run();
工厂类分离与java反射机制    public void stop();
工厂类分离与java反射机制}
工厂类分离与java反射机制//具体实现类
工厂类分离与java反射机制class Benz implements Car{
工厂类分离与java反射机制    public void run(){
工厂类分离与java反射机制        System.out.println("Benz开始启动了。。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制    public void stop(){
工厂类分离与java反射机制        System.out.println("Benz停车了。。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制//具体实现类
工厂类分离与java反射机制class Ford implements Car{
工厂类分离与java反射机制    public void run(){
工厂类分离与java反射机制        System.out.println("Ford开始启动了。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制    public void stop(){
工厂类分离与java反射机制        System.out.println("Ford停车了。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制//工厂
工厂类分离与java反射机制class Factory{
工厂类分离与java反射机制    public static Car getCarInstance(){
工厂类分离与java反射机制        return new Ford();
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制public class FactoryDemo01 {
工厂类分离与java反射机制
工厂类分离与java反射机制    public static void main(String[] args) {
工厂类分离与java反射机制        Car c=Factory.getCarInstance();
工厂类分离与java反射机制        c.run();
工厂类分离与java反射机制        c.stop();
工厂类分离与java反射机制
工厂类分离与java反射机制    }
工厂类分离与java反射机制
工厂类分离与java反射机制}
工厂类分离与java反射机制

实例二:

工厂类分离与java反射机制package fac;
工厂类分离与java反射机制
工厂类分离与java反射机制
工厂类分离与java反射机制//定义接口
工厂类分离与java反射机制interface Car{
工厂类分离与java反射机制    public void run();
工厂类分离与java反射机制    public void stop();
工厂类分离与java反射机制}
工厂类分离与java反射机制//具体实现类
工厂类分离与java反射机制class Benz implements Car{
工厂类分离与java反射机制    public void run(){
工厂类分离与java反射机制        System.out.println("Benz开始启动了。。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制    public void stop(){
工厂类分离与java反射机制        System.out.println("Benz停车了。。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制
工厂类分离与java反射机制class Ford implements Car{
工厂类分离与java反射机制    public void run(){
工厂类分离与java反射机制        System.out.println("Ford开始启动了。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制    public void stop(){
工厂类分离与java反射机制        System.out.println("Ford停车了。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制//工厂
工厂类分离与java反射机制class Factory{
工厂类分离与java反射机制    public static Car getCarInstance(String type){
工厂类分离与java反射机制        Car c=null;
工厂类分离与java反射机制        if("Benz".equals(type)){
工厂类分离与java反射机制            c=new Benz();
工厂类分离与java反射机制        }
工厂类分离与java反射机制        if("Ford".equals(type)){
工厂类分离与java反射机制            c=new Ford();
工厂类分离与java反射机制        }
工厂类分离与java反射机制        return c;
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制
工厂类分离与java反射机制
工厂类分离与java反射机制public class FactoryDemo02 {
工厂类分离与java反射机制
工厂类分离与java反射机制    public static void main(String[] args) {
工厂类分离与java反射机制        Car c=Factory.getCarInstance("Benz");
工厂类分离与java反射机制        if(c!=null){
工厂类分离与java反射机制            c.run();
工厂类分离与java反射机制            c.stop();
工厂类分离与java反射机制        }else{
工厂类分离与java反射机制            System.out.println("造不了这种汽车。。。");
工厂类分离与java反射机制        }
工厂类分离与java反射机制        
工厂类分离与java反射机制
工厂类分离与java反射机制    }
工厂类分离与java反射机制
工厂类分离与java反射机制}
工厂类分离与java反射机制
工厂类分离与java反射机制

实例三:

工厂类分离与java反射机制interface Car{
工厂类分离与java反射机制    public void run();
工厂类分离与java反射机制    public void stop();
工厂类分离与java反射机制}
工厂类分离与java反射机制
工厂类分离与java反射机制class Benz implements Car{
工厂类分离与java反射机制    public void run(){
工厂类分离与java反射机制        System.out.println("Benz开始启动了。。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制    public void stop(){
工厂类分离与java反射机制        System.out.println("Benz停车了。。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制
工厂类分离与java反射机制class Ford implements Car{
工厂类分离与java反射机制    public void run(){
工厂类分离与java反射机制        System.out.println("Ford开始启动了。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制    public void stop(){
工厂类分离与java反射机制        System.out.println("Ford停车了。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制
工厂类分离与java反射机制class Toyota implements Car{
工厂类分离与java反射机制    public void run(){
工厂类分离与java反射机制        System.out.println("Toyota开始启动了。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制    public void stop(){
工厂类分离与java反射机制        System.out.println("Toyota停车了。。。。");
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制
工厂类分离与java反射机制class Factory{
工厂类分离与java反射机制    public static Car getCarInstance(String type){
工厂类分离与java反射机制        Car c=null;
工厂类分离与java反射机制        try {
工厂类分离与java反射机制            c=(Car)Class.forName("org.jzkangta.factorydemo03."+type).newInstance();//利用反射得到汽车类型 
工厂类分离与java反射机制        } catch (InstantiationException e) {
工厂类分离与java反射机制            // TODO Auto-generated catch block
工厂类分离与java反射机制            e.printStackTrace();
工厂类分离与java反射机制        } catch (IllegalAccessException e) {
工厂类分离与java反射机制            // TODO Auto-generated catch block
工厂类分离与java反射机制            e.printStackTrace();
工厂类分离与java反射机制        } catch (ClassNotFoundException e) {
工厂类分离与java反射机制            // TODO Auto-generated catch block
工厂类分离与java反射机制            e.printStackTrace();
工厂类分离与java反射机制        }
工厂类分离与java反射机制    
工厂类分离与java反射机制        return c;
工厂类分离与java反射机制    }
工厂类分离与java反射机制}
工厂类分离与java反射机制public class FactoryDemo03 {
工厂类分离与java反射机制
工厂类分离与java反射机制    public static void main(String[] args) {
工厂类分离与java反射机制        Car c=Factory.getCarInstance("Toyota");
工厂类分离与java反射机制        if(c!=null){
工厂类分离与java反射机制            c.run();
工厂类分离与java反射机制            c.stop();
工厂类分离与java反射机制        }else{
工厂类分离与java反射机制            System.out.println("造不了这种汽车。。。");
工厂类分离与java反射机制        }
工厂类分离与java反射机制        
工厂类分离与java反射机制
工厂类分离与java反射机制    }
工厂类分离与java反射机制
工厂类分离与java反射机制}
工厂类分离与java反射机制
工厂类分离与java反射机制

对比三个实例:
实例一,虽然实现了简单工厂,但每次只能得到一种汽车,如果我们想换一种,就得修改工厂,太不方便,而实例二则改变了这种情况,便得我们可以按照我们的需要更换汽车,但我们所更换的汽车必须是实现类中有的,如果我们想要增加一种汽车的时候,我们还是得更改工厂,通过改进,实例三利用反射机制,得到汽车类型,这样当我们需要增加一种新的汽车时,就无需要再修改工厂,而只需要增加要实现的类即可。也就是说要增加什么样的汽车直接增加这个汽车的类即可,而无需改变工厂。从而达到了工厂分离的效果。

参考:http://www.blogjava.net/jzgl-ever/archive/2008/07/26/217704.html

 
 
 
 
阅读(1697)| 评论(1)
|     
喜欢推荐转载

最近读者

工厂类分离与java反射机制
登录后,您可以在此留下足迹。
关闭
玩LOFTR,免费冲印20张照片,人人有奖!     我要抢>

评论

点击登录|昵称:
 
工厂类分离与java反射机制
01-06 16:24
例子不错
回复
 
 
 
 
 
 

网易公司版权所有 ©1997-2014

工厂类分离与java反射机制工厂类分离与java反射机制

上一篇:【实验吧】CTF_Web_简单的SQL注入之3


下一篇:用require.js封装原生js轮播图