FACTORY模式在SPRING中的实现

业务接口:

public   interface  Hello  {   
    
public   void  print();   
}
  

两个不同的BEAN实现:

public   class  TestBean  implements   Hello {         
        
public   void  print()  {   
        System.out.println(
" this is test " );   
    }
   
}
 

public   class  TestBean1  implements   Hello {       
    
public   void  print()  {   
        System.out.println(
" this is test1 " );   
    }
   
}
  


工厂类:

public   class  SimpleFactoryBean   {   
    
private  Hello testBean;  
    
private  Hello testBean1;   

    
public  Hello getTestBean()  {   
        
return  testBean;   
    }
   
  
    
public   void  setTestBean(Hello testBean)  {   
        
this .testBean  =  testBean;   
    }
   
  
    
public  Hello getTestBean1()  {   
        
return  testBean1;   
    }
   
  
    
public   void  setTestBean1(Hello testBean1)  {   
        
this .testBean1  =  testBean1;   
    }
   
  
    
public  Hello createBean( int  i) {   
         
if  (i == 1 return  testBean;   
         
if  (i == 2 return  testBean1;   
         
return   null ;   
     }
    
}
 

 
在SPRING中的配置文件:

< bean id = " factory "   class = " org.appfuse.dao.hibernate.SimpleFactoryBean " >   
    
< property name = " testBean "  ref = " testBean " />   
     
< property name = " testBean1 "  ref = " testBean1 " />     
</ bean >   
< bean id = " testBean "   class = " org.appfuse.dao.TestBean " />   
< bean id = " testBean1 "   class = " org.appfuse.dao.TestBean1 " />  

测试代码:

public   void  testBean()  throws  Exception  {   
      FactoryBean b
= (FactoryBean)ctx.getBean( " &simple " );   
     SimpleFactoryBean test;   
    Hello hello;   
    test
= (SimpleFactoryBean)ctx.getBean( " factory " );   
    hello
= test.createBean( 2 );   
    hello.print();        
}
  
以上代码可以实现根据参数的不同,返回不同的具体类,同时在你的代码里面可以完全不依赖于spring框架。这正是spring的优势所在。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值