接口
package com.example.demo.model; import org.springframework.beans.factory.InitializingBean; public interface Handler extends InitializingBean { public void aaa(String name); }
工厂;
package com.example.demo.impl; import com.example.demo.model.Handler; import org.springframework.util.StringUtils; import java.util.HashMap; import java.util.Map; public class DemoFactory { private static Map<String, Handler> stringHandlerMap = new HashMap<>(); public static Handler getInvokeStrateg(String name){ return stringHandlerMap.get(name); } public static void register(String name,Handler handler){ if(StringUtils.isEmpty(name) || null == handler){ return; } stringHandlerMap.put(name,handler); } }
实现:
package com.example.demo.impl; import com.example.demo.model.Handler; import org.springframework.stereotype.Component; @Component public class DemoHandler implements Handler { @Override public void aaa(String name) { System.out.println(name +"demoHandler....."); } @Override public void afterPropertiesSet() throws Exception { DemoFactory.register("dd",this); } }
接口:
public interface ReportHandler { String getResult(); }
实现类;
@Component(value = "A1") public class ReportHandlerA1 implements ReportHandler { @Override public String getResult() { return "我是A1"; } }
工厂;
@Service public class ReportFactory { /** * 初始化的时候将所有的ReportHandler自动加载到Map中 */ @Autowired private final Map<String, ReportHandler> reportIns = new ConcurrentHashMap<>(); public ReportHandler getReportIns(String code) { ReportHandler reportInstance = reportIns.get(code); if (reportInstance == null) { throw new RuntimeException("未定义reportInstance"); } return reportInstance; } }
原文:https://www.cnblogs.com/leeego-123/p/14718537.html