2013-11-17 4 views
0

У меня есть класс, который содержит список подключенных клиентов, причем их имена пользователей являются ключом, а экземпляр клиента - значением. До сих пор класс выглядит следующим образом:Лучший способ сохранить список значений в Java

public class ClientList { 

    private static HashMap<String, Client> clients = new HashMap<>(); 

    /** 
    * Add a client to the list of connected clients 
    * 
    * @param username Unique client key 
    * @param client The client to add to the list 
    */ 
    public static void add(String username, Client client) { 
     clients.put(username, client); 
    } 

    /** 
    * Remove a client from the list 
    * 
    * @param username the client to remove 
    */ 
    public static void remove(String username) { 
     clients.remove(username); 
    } 

    /** 
    * Get the client in the list that has the given username 
    * 
    * @param username The username of the client to return 
    * @return The client with a matching username 
    */ 
    public static Client getClient(String username) { 
     return clients.get(username); 
    } 

    /** 
    * @return The client list 
    */ 
    public static HashMap<String, Client> getList() { 
     return clients; 
    } 

} 

Однако при рассмотрении класса я понял, все эти методы просто передавая Params к HashMap классу, то есть ClientList класса не приносит ничего нового в программу. Теперь из-за этого я знаю, что могу просто создать статический HashMap<String, Client> где-нибудь и использовать его, не создавая для него совершенно новый класс; моя проблема: у меня нет подходящих классов для хранения списка, например, для моего класса ClientListener для доступа к списку. Я не хочу статически обращаться к классу с нерелевантным именем, например ClientWriter.clientList. Итак, мой вопрос: какой лучший способ обработки этой карты, где она поддерживает удобство чтения?

+2

Прежде всего, прекратить использование 'static', где это не нужно. –

+0

@SotiriosDelimanolis Список клиентов статичен, потому что я не хочу создавать какие-либо новые экземпляры. Какой подход я должен использовать вместо этого? – JamoBox

+0

_I не хочу создавать какие-либо новые экземпляры it_, не является хорошей причиной не создавать новые экземпляры. –

ответ

1

Возможно, вам нужно singleton pattern

+0

Это, кажется, лучшее решение, спасибо. – JamoBox

+1

Это кажется хорошей идеей. Пока ваше приложение не будет успешным, и вам необходимо поддерживать «свободных» клиентов и «премиальных» клиентов. Или вы поддерживаете несколько сокетов, FTP и HTTP, уровни безопасности, что угодно. В то время вы могли бы пожалеть о Синглтоне. – user949300

Смежные вопросы