网站上可以做直播吗,asp+php+jsp网站开发,融资平台公司定义,公众号 转 wordpress控制反转
是面向对象编程中的一种设计原则#xff0c;可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入#xff08;Dependency Injection#xff0c;简称DI#xff09;#xff0c;还有一种方式叫“依赖查找”#xff08;Dependency Lookup#xff09…控制反转
是面向对象编程中的一种设计原则可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入Dependency Injection简称DI还有一种方式叫“依赖查找”Dependency Lookup。通过控制反转对象在被创建的时候由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说依赖被注入到对象中。 ----来自百度
工厂 使用工厂依赖来对对象注入依赖。 没有使用工厂模式前 使用了工厂模式之后
Beans.properties配置文件 工厂将解析properties配置文件获取到对应的key和value 在工厂类中使用java反射技术来在程序运行期间注入依赖创建对象。 Usercom.domain.User
ISelimplcom.dao.Impl.ISelimpl
IUserSelimplcom.service.Impl.IUserSelimplbeansFactory 工厂类
package com.factory;import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;public class Beasfactory {private static Properties properties null;private static MapString, Object beans null;static {try {properties new Properties();//使用类加载器获取Properties的流对象InputStream in Beasfactory.class.getClassLoader().getResourceAsStream(Beans.properties);properties.load(in);beans new HashMapString, Object();final Enumeration keys properties.keys();while (keys.hasMoreElements()) {String key keys.nextElement().toString();String beanpath properties.getProperty(key);Object value Class.forName(beanpath).newInstance();beans.put(key, value);}} catch (Exception e) {//ExceptionInInitializerError 它继承的是一个Error 会直接终止程序throw new ExceptionInInitializerError(初始化失败);}}/*** 获取单例对象** param beanName* return*/public static Object getBean(String beanName) {return beans.get(beanName);}
} 在工厂类中我们使用Map来存储对象这样我们在需要使用这些对象时直接获取对象不需要重新创建对象降低了JVM的负担这就是单例对象其他类在调用该对象时都是获取它的引用本质上都是同一个对象内存地址相同。 实例
package com.service.Impl;import com.dao.ISel;
import com.dao.Impl.ISelimpl;
import com.factory.Beasfactory;
import com.service.IUserSel;public class IUserSelimpl implements IUserSel {public void userSelAll() {ISel sel (ISelimpl)Beasfactory.getBean(ISelimpl);sel.selAll();}
}
工厂模式降低了程序的耦合性提高了程序的独立性逻辑性也更强了调用关系也明朗了。