三层架构问题----解耦

来源:互联网 发布:为什么淘宝上苹果便宜 编辑:程序博客网 时间:2024/05/14 18:58

解耦的概念

在分层结构中,我们希望将各个功能约束在各自的模块当中的,而属于某一层的对象、方法“入侵”到了其他层,如将web层中的ServletContext对象传入service层,或service层调用XMLDao独有的方法,就会导致层与层之间的关系过于“紧密”,当需要修改某一层时不可避免的要修改其他关联的层,这和我们软件分层最初的设想---层与层分离,一个层尽量不依赖其他层存在,当修改一层时无需修改另一层懂得设想是违背的。这种“入侵”造成的紧密关系就叫做层与层之间发生的耦合,而去掉这种耦合性的过程就叫做层与层之间的“解耦”


利用工厂类可以实现解耦的功能。

需要在src目录下创建一个bean.properties

class BeanFactory

{

Properties properties = null;

private  static BeanFactory factory = new BeanFactory();

private BeanFactory (){ }

public static BeanFactory getInstance()

     {

return factory

}


static

{

Properties properties = new Properties();

properties.load(BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties"));

}


/**
* 加载需要的实现类
* @param clazz
* @return
*/
public static<T> T getImpl(Class<T> clazz)
{
String key=clazz.getSimpleName();//clazz.getName()
String className = properties.getProperty(key);
try {
return (T) Class.forName(className).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

}

0 0