写一个java工厂模式的报告,工厂模式的一个简单实现

该博客介绍了如何使用工厂类动态获取Spring上下文中接口TestInterface的实现类实例。通过ContextUtil获取ApplicationContext,然后利用beanMap获取所有实现类,并通过getType方法匹配指定类型的实例。这种方式在多实现类场景下提供了灵活的实例获取方式。
摘要由CSDN通过智能技术生成

1 工厂类

public class TestFactory {

/**

*

*/

private static Map beanMap = ContextUtil.getContext().getBeansOfType(TestInterface.class, false, false);

public static TestInterface getInstance(String infType) {

TestInterface curInstance = null;

for (String beanName : beanMap.keySet()) {

TestInterface instance = beanMap.get(beanName);

if (instance.getType() == null)

throw new RuntimeException("接口实现类类型不可以为空");

else {

if (infType.equals(instance.getType())) {

curInstance = instance;

break;

}

}

}

return curInstance;

}

}

2 获取bean类

根据Spring上下文得到某个接口的实现类。

public class ContextUtil implements ApplicationContextAware {

private static ApplicationContext context;

@Override

public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

ContextUtil.context = applicationContext;

}

public static ApplicationContext getContext() {

return context;

}

}

3 需要获取实例的接口类

public interface TestInterface {

String getType();

void testFunc(T t);

}

4 TestInterface的一个实现类

public class TestInterfaceImpl implements TestInterface {

@Override

public String getType() {

return "1";

}

@Override

public void testFunc(String s) {

System.out.println("TestInterfaceImpl -- 01");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值