SpringBoot获取接口的所有实现类以及使用IOC实现最完美的简单工厂设计模式
2021-05-29 10:01
标签:values public inter tps 参数 exce text logs instance 本文连接地址:https://www.cnblogs.com/muphy/p/14770494.html 此方式主要是针对已经被IOC容器管理的实现类 例子: 传统的工厂设计模式(不管是简单工厂模式、工厂方法模式还是抽象工厂模式),在创建新的接口类型的时候都必须要修改或者增加工厂部分的代码,通过(ioc)控制反转,对象在被创建的时候就(DI)注入到了容器中,其中getType方法实现策略模式功能,只需要结合前一个例子就能直接获取新的接口类型。 接着上面的例子: 由此可见此方法的好处是工厂部分的代码不要用任何改动,只管新增实现类即可,例子中的getType方法非常关键 SpringBoot获取接口的所有实现类以及使用IOC实现最完美的简单工厂设计模式 标签:values public inter tps 参数 exce text logs instance 原文地址:https://www.cnblogs.com/muphy/p/14770494.htmlSpringBoot获取接口的所有实现类以及使用IOC实现最完美的简单工厂设计模式
SpringBoot获取接口的所有实现类
//创建Animal接口
public interface Animal{
String getType();//此方法可以免去工厂模式需要的策略判断
void eat();
}
//创建Cat类实现Animal接口并使用@Component注解
@Component
public class Cat implements Animal{
@Override
public String getType() {
return "猫";
}
@Override
public void eat() {
System.out.println("吃耗子");
}
}
//创建Dog类实现Animal接口并使用@Component注解
@Component
public class Dog implements Animal{
@Override
public String getType() {
return "狗";
}
@Override
public void eat() {
System.out.println("吃骨头");
}
}
//AnimalTest测试
public static class AnimalTest implements ApplicationContextAware{
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
Collection values = applicationContext.getBeansOfType(Animal.class).values();
//调用每个子类的方法
values.forEach(c->{
c.eat();
});
}
}
使用IOC实现简单工厂设计模式
//AnimalFactory工厂通过传入的参数获取对应的接口实现类
@Component
public static class AnimalFactory implements ApplicationContextAware {
private static Map
文章标题:SpringBoot获取接口的所有实现类以及使用IOC实现最完美的简单工厂设计模式
文章链接:http://soscw.com/index.php/essay/89057.html