这里主要给出一个示例,该示例调用者无需关心被调用者的实例化问题,由被调用者自身解决,实现调用者和被调用者之间的解耦,同时还要求被调用者保证其实例线程安全的单例,其实代码很简单,还是看代码和注释吧
package com.yf.ioc; public class IocServce { //单例模式, private IocServce(){ } //私有内部类,保证线程安全 private static class IocHelper{ private static IocServce ioc=new IocServce(); } public static IocServce getInstance(){ return IocHelper.ioc; } public void doSomething(){ System.out.println("This is Ioc Test"); } }
测试代码
package com.yf.ioc; public class IcoTest { /** * @param args */ public static void main(String[] args) { //调用者无需自己实例化类,有被调用者自身来管理 IocServce.getInstance().doSomething(); } }