| 失效链接处理 | 
| SpringIOC解耦 PDF 下载 
	本站整理下载: 
		提取码:t74a 
	相关截图:  
	主要内容: 
		Dao.java代码: 
		package com.heima; 
		public interface Dao { 
		    public abstract void method(); 
		} 
		Services.java代码: 
		package com.heima; 
		public interface Services { 
		    void method(); 
		} 
		实现类: 
		DaoImpl.java: 
		package com.heima.Impl; 
		import com.Factory.BeanFactory; 
		import com.heima.Dao; 
		import com.heima.Services; 
		public class DaoImpl implements Dao { 
		//     private Services services=new ServicesImpl(); 
		    private Services services= (Services)BeanFactory.getBean("services"); 
		    public void method(){ 
		        services.method(); 
		    } 
		} 
		ServicesImpl.java代码: 
		package com.heima.Impl; 
		import com.heima.Services; 
		public class ServicesImpl implements Services{ 
		    public void method(){ 
		        System.out.println("保存了账户云云"); 
		    } 
		} 
		注解:Dao层的实现类在类体里面创建了一个ServicesImpl是实现类(private Services services= (Services)BeanFactory.getBean("services"); 
		Dao层的method()方法里调用了ServicesImpl实现类里面的method()方法。 
		这个时候需要模拟一个web层调用Dao层的实现类达到输出语句的目的: 
		Client.java代码: 
		package com.heima.UI; 
		import com.Factory.BeanFactory; 
		import com.heima.Dao; 
		import com.heima.Impl.DaoImpl; 
		public class Client { 
		    public static void main(String[] args) { 
		//        Dao dao=new DaoImpl(); 
		        Dao dao= (Dao)BeanFactory.getBean("dao"); 
		        dao.method(); 
		    } 
		} 
		注意看以上代码创建Dao接口,Services接口时都没有采用new方法创建实现类,而是采用了工厂模式。 
		工厂模式可以解决程序间的耦合: 
		但创建实现类对象时需要一个配置文件告诉程序创建什么对象,同时需要一个beanfactory.java去读取配置文件,并且创建一个实现类对象。Beanfactory名字随便取。 
		Beanfactory.java代码: 
		package com.Factory; 
		import java.io.InputStream; 
		import java.util.Properties; 
		public class BeanFactory { 
		    private static Properties prop; 
		    static { 
		        try { 
		            prop = new Properties(); 
		            InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties"); 
		            prop.load(in); 
		        }catch (Exception e) 
		        { 
		            throw new ExceptionInInitializerError(); 
		        } 
		    } 
		    public static Object getBean(String name){ 
		        Object bean=null; 
		        try { 
		            String beanPath = prop.getProperty(name); 
		            bean = Class.forName(beanPath).newInstance(); 
		        }catch (Exception e){ 
		            e.printStackTrace(); 
		        } 
		        return bean; 
		    } 
		} 
		配置文件bean.properties代码: 
		services=com.heima.Impl.ServicesImpl 
		dao=com.heima.Impl.DaoImpl 
		----------------------------------------- 
		上面的方法降低了耦合,但BeanFactory代码很繁琐,可以直接用Spring框架的IOC(控制反转)代替,如下: | 



 
     苏公网安备 32061202001004号
苏公网安备 32061202001004号


 
    