工厂模式的简单实现
package com.youai; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class Factory { public static final String Tag = Factory.class.getSimpleName(); final static Map<String, Object> factory = new ConcurrentHashMap<>(); public static <T> Object getFactory(Class<T> clazz) { Object object = null; if (factory.containsKey(clazz.getSimpleName())) { System.err.println("直接获取:" + clazz.getSimpleName()); return factory.get(clazz.getSimpleName()); } try { object = clazz.newInstance(); factory.put(clazz.getSimpleName(), object); System.err.println("初始化:" + clazz.getSimpleName()); return object; } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); } return object; } public static void main(String[] args) throws Exception { Test(); Thread.sleep(10000); Test(); } public static void Test() { Send send = (Send) getFactory(Send.class); send.run(); Message message = (Message) getFactory(Message.class); message.run(); Back back = (Back) getFactory(Back.class); back.run(); } } class Send { public static final String Tag = Send.class.getSimpleName(); public Send() { } public void run() { for (int k = 0; k < 10; k++) { System.err.println(Send.Tag); } } } class Message { public static final String Tag = Message.class.getSimpleName(); public Message() { } public void run() { for (int k = 0; k < 10; k++) { System.err.println(Message.Tag); } } } class Back { public static final String Tag = Back.class.getSimpleName(); public Back() { } public void run() { for (int k = 0; k < 10; k++) { System.err.println(Back.Tag); } } } 运行: 初始化:Send Send Send Send Send Send Send Send Send Send Send 初始化:Message Message Message Message Message Message Message Message Message Message Message 初始化:Back Back Back Back Back Back Back Back Back Back Back 直接获取:Send Send Send Send Send Send Send Send Send Send Send 直接获取:Message Message Message Message Message Message Message Message Message Message Message 直接获取:Back Back Back Back Back Back Back Back Back Back Back
posted on 2019-01-03 16:04 Mature1021 阅读(213) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步