失效链接处理 |
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(控制反转)代替,如下:
|