Шаблон Обзора Наблюдателя Формы Приложения Java - PullRequest
3 голосов
/ 05 мая 2010

Шаблон наблюдателя? Где я могу получить примеры этого на Java (я знаю Google, но также надеялся на некоторую личную информацию.)

На правильное объяснение моей проблемы:

У меня есть 3 формы / окна. «доска» - это основная форма, которая загружается как приложение.

"чат" - это место, где происходит текстовый чат.

«сеть» - это место, где установлено сетевое соединение.

У меня есть игра (connect4), работающая локально, и я хотел бы также реализовать ее сетевую версию.

Моя идея, возможно, связана с тем, что шаблон Observer имеет поток (или что-то), отслеживающий состояние сети во время выполнения и обновляющий формы чата и доски объявлений о текущем состоянии сети, а также доставляющий полученные данные из сети.

мои идеи верны? или как мне установить обновления сети и состояния сети в приложении?

спасибо за ваш вклад.

доска http://img39.imageshack.us/img39/5221/boardz.jpg

чат http://img691.imageshack.us/img691/3629/chatos.jpg

сеть http://img441.imageshack.us/img441/5906/networks.jpg

РЕДАКТИРОВАТЬ: есть ли книга по шаблону Java Observer, которую можно порекомендовать?

Ответы [ 3 ]

1 голос
/ 05 мая 2010

Шаблон наблюдателя часто называют слушателями событий в Java.Возможно, вы захотите найти и это.

Ваша идея кажется верной, хотя в какой-то момент вам нужно будет углубиться в технические детали.Реализуете ли вы свои сетевые коммуникации с помощью RMI, Caucho, HTTPInvoker?

В любом случае вам нужен игровой «сервер», чтобы иметь возможность публиковать обновления для всех игроков.Это может быть реализовано с помощью опроса или передачи объекта по сети.

Здесь есть несколько хороших ссылок на StackOverflow - проверьте этот и этот также ,Это должно помочь вам.

0 голосов
/ 06 мая 2010

Я нашел это очень полезным для изучения шаблонов проектирования GOF с точки зрения Java. Я нашел его более доступным, чем книга GOF, так как я являюсь разработчиком Java.

http://www.amazon.com/Applied-Java-Patterns-Stephen-Stelting/dp/0130935387

0 голосов
/ 05 мая 2010

В этом случае окна чата и игры будут считаться наблюдателями. Вы захотите реализовать интерфейс, называемый чем-то вроде Observers (у java API есть собственный шаблон Observer на java.util.Observer, но вы можете реализовать свой собственный), и в вашем окне чата и доски объявлений их можно реализовать. Вы можете выглядеть так:

public interface Observer 
{
public void postUpdate(String newData); 
}

postUpdate - это функция, которую должны определить все наблюдатели, и оба эти класса и все, что вы хотите добавить позже, должны будут реализовать Observer, например:

public class ChatWindow Implements Observer
{
//bla bla bla
}

Тогда в вашем сетевом классе вам понадобится метод, подобный

public void addObserver(Observer newObserver)
{
//Do something here to add the new Observer to some list of Observers, maybe a
//List<Observer> or something?
}

Затем во время инициализации вы захотите вызывать функцию addObserver у каждого наблюдателя, которого вы хотите наблюдать, и иметь некоторую логику в своем сетевом классе для обновления всех, кто зарегистрировался, путем вызова их функций postUpdate. В этом случае я действовал так, как будто вы хотите отправить им строку, содержащую новые данные, это только один вариант. Вы также можете сделать так, чтобы он ничего не передавал и просто действовал как уведомление о том, что произошло обновление, и в этом случае наблюдатели будут нести ответственность за проверку того, изменились ли данные, которые им нужны из сети; или, может быть, вы могли бы передать ему некоторые данные, представляющие, что именно было обновлено в сети, чтобы класс мог знать, заботится ли он о том, что изменилось (например, игровая доска может не заботиться, произошло ли единственное изменение в данных чата) так что больше ничего не надоедать).

Наилучшие успехи в изучении шаблонов «Head First Design Patterns» вы можете найти в книгах.

...