hefeixia
2021-02-18 5b8c95c760840f09910730943b21391e47187315
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package chat.server.call;
 
import java.util.HashMap;
import java.util.Map;
 
import chat.handler.ChannelHandler;
import chat.handler.ChatRoomHandler;
import chat.handler.ClientHandler;
import chat.handler.GroupHandler;
import chat.handler.FriendshipHandler;
import chat.handler.MessageHandler;
import chat.handler.RobotHandler;
import chat.handler.SensitiveHandler;
import chat.handler.SystemHandler;
import chat.handler.FriendCircleHandler;
 
 
public class CallObjectMap {
    
    private static Map<String, Class<? extends CallObject>> objectMap;
    
    static {
        init();
    }
 
    public static CallObject get(Operator operator) {
        try {
            String key = operator.getObject();
            key = key.toLowerCase();
            
            Class<? extends CallObject> clazz = objectMap.get(key);
            
            if (clazz == null) {
                return null;
            }
            
            CallObject object = clazz.newInstance();
            return object;
        }
        catch (Exception e) {
            return null;
        }
    }
 
    private static void init() {
        //1.
        objectMap = new HashMap<String, Class<? extends CallObject>>();
        
        addOneCallObject("client", ClientHandler.class);
        addOneCallObject("chatroom", ChatRoomHandler.class);
        addOneCallObject("sensitive", SensitiveHandler.class);
        addOneCallObject("friend", FriendshipHandler.class);    
        addOneCallObject("message", MessageHandler.class);
        addOneCallObject("group", GroupHandler.class);
        addOneCallObject("channel", ChannelHandler.class);
        addOneCallObject("robot", RobotHandler.class);    
        addOneCallObject("system", SystemHandler.class);
        addOneCallObject("friendcircle", FriendCircleHandler.class);
    }
 
    private static void addOneCallObject(String key, Class<? extends CallObject> clazz) {
        key = key.toLowerCase();
        objectMap.put(key, clazz);
    }
 
}