Клиент / Сервер - Сервер может измениться, как абстрагироваться от этого? - PullRequest
1 голос
/ 05 марта 2011

Мне нужно реализовать клиент-серверную архитектуру на Java, где сервер может измениться в будущем (ну, в определенный момент он точно изменится).

Каков наилучший способ учесть это возможное изменение? Вот что я подумал:

1.) Создать интерфейс для Сервера:

public interface AlarmService {
  ...
}

2.) Создание конкретной реализации:

public AlarmServiceImpl implements AlarmService {
  ...
}

3.) Напишите статическую фабрику, чтобы получить какую-то реализацию

public AlarmServiceFactory {
  private AlarmService AlarmServiceFactory() {
    return new AlarmServiceImpl();
  }
}

Это хорошая идея? Или это слишком много? Или, может быть, я не должен принимать это изменение во внимание?

Ответы [ 3 ]

3 голосов
/ 05 марта 2011

Существует мантра, которая гласит: «всегда программируй для интерфейса, а не для реализации». Хотя это правда во многих случаях, много времени это излишне. Однако в вашем случае, поскольку вы ЗНАЕТЕ, что реализация изменится, и вы не будете иметь столько контроля над клиентами, как сервер, вам определенно следует запрограммировать интерфейс.

Фабрика действительно будет полезна только в двух случаях. Во-первых, у вас есть несколько доступных реализаций, и вам нужно решить, какую из них создать во время выполнения. Другое - если вы создаете новый AlarmServiceImpl() повсеместно, и реализация меняется. В противном случае, я считаю использование фабрики излишним.

Итак ... определенно создайте интерфейс для взаимодействия клиент / сервер. Используйте фабрику только в том случае, если замена или выбор реализаций не состоят из одной или двух строк кода и разбросаны по разным местам.

2 голосов
/ 06 марта 2011

Рассмотрим шаблон Business Delegate . Он более мощный, чем просто предложенный интерфейс / реализация.

1 голос
/ 06 марта 2011

вопрос мне не ясен ни на один процент.но я думаю, что вы хотите сделать свой сервер гибким, чтобы вы могли легко менять сервер, не меняя другие части.я прав?если да, то я думаю, что вы должны взглянуть на шаблон МОК.

С наилучшими пожеланиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...