zoukankan      html  css  js  c++  java
  • 工厂模式的简单实现

    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
  • 相关阅读:
    湖南省第6届程序大赛第6题 Biggest Number
    湖南省第6届程序大赛第5题 内部收益率
    湖南省第6届程序大赛第4题 台球碰撞
    湖南省第6届程序大赛第3题 数字整除
    湖南省第6届程序大赛第二题 弟弟的作业
    湖南省第6届程序设计大赛第一题 汽水瓶
    Nginx 负载均衡配置
    Nginx 反向代理流程
    Nginx 对客户端请求的特殊处理
    Nginx文件操作的优化
  • 原文地址:https://www.cnblogs.com/mature1021/p/10214744.html
Copyright © 2011-2022 走看看