标签:员工 margin 轻量级 ext stat 实例化 r.java 控制 思路
IOC(控制反转:Inverse of Control ),又称作 依赖注入,是一种重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的 Spring 框架的核心。
// 员工1实体:ZhangShang.java public class ZhangSan { public void test(){ System.out.println("张三-测试程序"); } }
// 工作类:JavaWork.java public class JavaWork { public void doTest(){ ZhangSan zhangsan=new ZhangSan(); zhangsan.test(); } }
// 主管测试类:Test.java public class Test { public static void main(String[] args) { JavaWork javaWork=new JavaWork(); javaWork.doTest(); } }
注:此时“测试工作”和“张三员工”完全耦合在一起,如若需要其它人做“测试工作”,那么 javaWork.doTest 方法里面的内容全部要修改, 这时我们可以利用 IOC 的设计思路将控制权反转,将某个人执行这种工作的控制权转交给主管。
.
// Tester.java 接口 public interface Tester { public void test(); } // 员工1实体:ZhangSan.java 实现 Tester 接口 public class ZhangSan implements Tester{ public void test(){ System.out.println("张三-测试程序"); } } // 员工2实体:LiSi.java 同样实现 Tester 接口 public class Lisi implements Tester{ public void test(){ System.out.println("李四-测试程序"); } }
// 工作类:JavaWork.java public class JavaWork { private Tester tester; //配置beans.xml 文件中的属性时,name值要和声明值完全对应 public void setTester(Tester tester) { this.tester = tester; } public void doTest(){ tester.test(); } }
// 主管测试类:Test.java public class Test { public static void main(String[] args) { JavaWork javaWork=new JavaWork(); javaWork.setTester(new ZhangSan()); //只需要修改这里的实例化对象就可选择不同的员工来实现工作 javaWork.doTest(); } }
<!-- beans.xml 配置 --> <bean id="zhangsan" class="com.java1234.service.ZhangSan"></bean> <bean id="lisi" class="com.java1234.service.Lisi"></bean> <bean id="javaWork" class="com.java1234.service.JavaWork"> <property name="tester" ref="lisi"></property>
<!-- 依赖注入,利用java的反射机制.设置 tester 的值引用为 lisi,其中name的值要和类里面声明的值完全对应 --> </bean>
// 在2的基础上修改:主管测试类:Test2.java public class Test2 { public static void main(String[] args) { ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml"); JavaWork javaWork=(JavaWork)ac.getBean("javaWork"); javaWork.doTest(); } }
标签:员工 margin 轻量级 ext stat 实例化 r.java 控制 思路
原文地址:https://www.cnblogs.com/Cocoomg/p/9824220.html