2015-06-27 8 views
0

Я пишу небольшое многопоточное клиент-серверное Java-приложение. Когда сервер запущен, он создает некоторые объекты, такие как объект для соединения db, другой для управления пользователями и т. Д. Мне нужно, чтобы они были доступны из каждой темы, которую я запускаю. Каков правильный способ сделать это? Передача объекта istance каждую тему так:Как получить доступ к объектам сервера из тем

public class Server{ 
     private ObjectType1 object1; 
     private ObjectType2 object2; 
     public void run{ 
      ....... 
      new ServerThread(object1,object2); 
      ....... 
     } 
} 

или передача сервер istance к каждой Теме:

public class Server{ 
     private TypeObject1 object1; 
     private TypeObject2 object2; 

     public TypeObject1 getObject1(){....} 
     public TypeObject2 getObject2(){...} 

     public void run(){ 
      ..... 
      new ServerThread(this); 
      ..... 
     } 
    } 

, а затем из объектов доступа темы таким образом?

server.getObject1(); 
+0

Рассмотрите возможность размещения ссылок на требуемые объекты в конструкторе сервера? Или, возможно, использовать статические ссылки на object1 и object2 – mcw

ответ

0

Самый правильный способ - передать единую ссылку на каждый объект, чтобы соблюдать так называемый Закон о Демерете: абстракция должна зависеть только от других абстракций, а не от других абстракций.

Но в том случае, если вы обнаружите, что необходимо пройти столько объектов, разумный (и более удобный) способ сделать это через новую абстракцию, которая инкапсулирует их всех, назовем ее Setup: Это должно быть один джаваб с таким количеством членов, сколько необходимо, но никакого поведения вообще.

Кстати: Помните, что соединение JDBC не должно использоваться более чем одним потоком одновременно.

Приветствия.

0

Вы можете создать специальный класс для хранения ссылок на объекты как ObjectHolder, где вы можете поместить ваш Object1 и Объект2.

Каждый поток может получить доступ к этому классу со статическим методом для получения объектов.

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

  • Нет связанных вопросов^_^