Персистентный Обмен сообщениями/Сервисная шина - Список мое собственное или риск кривая обучения?

Статья Robert Martin о Открывает, Closed Principle обеспечивает другую точку зрения:

ОБЪЕКТЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (КЛАССЫ, МОДУЛИ, ФУНКЦИИ, ETC.) ДОЛЖНО БЫТЬ ОТКРЫТО ДЛЯ РАСШИРЕНИЯ, НО ЗАКРЫТЫЙ ДЛЯ МОДИФИКАЦИИ.

В Вашем примере кода, Вы эффективно включаете клиента 'Тип Категории'

boolean investible ;
switch (customer.getCategory()) {
    case SUB_PRIME:
    case MID_PRIME:
        investible = customer.getSavingsAccount().getBalance() > 1e6; break;
    case PRIME:
        investible = customer.isCeo(); break;
}

В этой нынешней обстановке, новые клиентские категории могли бы возникать ;-). Это означает иметь необходимость открыть этот класс и постоянно изменять его. Могло бы быть хорошо, если у Вас только есть единственный оператор переключения, но что происходит, если Вы хотите использовать подобную логику в другом месте.

, А не другие предложения, где isInvestible сделан методом на Customer, я сказал бы, что Cagtegory должен стать абсолютным классом, и используемый для того, чтобы принять эти решения:

boolean investible ;
CustomerCategory category = customer.getCategory();
investible = category.isInvestible(customer);

class PrimeCustomerCategory extends CustomerCategory {
    public boolean isInvestible(Customer customer) {
        return customer.isCeo();
    }
}

6
задан Marcus Leon 22 November 2009 в 01:17
поделиться

2 ответа

  1. Вероятно, соображения производительности: итерация в обратном направлении выполняется быстрее, потому что сравнение с 0 является одной инструкцией машинного кода - многие бывшие программисты C имеют это укоренившееся хотя сейчас это уже неактуально.
0
ответ дан 17 December 2019 в 07:08
поделиться

Что ж, я не знаю, предлагаю ли я MSMQ, но я предполагаю, что есть много крайних случаев, о которых следует подумать для "собственного выбора".

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

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

Есть также ряд потенциальных преимуществ. случаи в сценариях, когда ваше приложение выходит из строя примерно в то же время, когда оно ставит сообщение в очередь - например, оно может не получить подтверждение того, что сообщение было поставлено в очередь, даже если оно было. Да,

2
ответ дан 17 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: