Стили общения Push и Pull в oop: почему стиль Push не является гибким?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Стили общения Push и Pull в oop: почему стиль Push не является гибким?

Сообщение Anonymous »


Я пытаюсь изучить шаблон проектирования Observer и начал смотреть серию, принадлежащую codewithmosh, под названием «Серия Ultimate Design Pattern».

на уроке, посвящённом Observer, он говорит:


Изображение


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

Однако у этого подхода есть проблема. Завтра мы могли бы представить новый тип ConcreteObserver, и этому наблюдателю может понадобиться другой набор ценностей. Поэтому нам придется вернуться сюда и измениться. интерфейс наблюдателя; возможно, нам придется ввести новый параметр или возможно, нам придется изменить объект, который здесь передается. мы должны ввести новые поля в этом классе.

Так что этот подход не очень гибкий, поскольку Субъект делает предположения об этих наблюдатели; предполагается, что этим наблюдателям нужны эти значения, когда происходит изменение. А что, если каждому наблюдателю понадобится свой набор ценности? Вот тогда мы и сможем использовать стиль общения «Притягивание».

Я просто пытаюсь понять, почему стиль Push не является гибким. мой вопрос касается этого предложения:

Итак, нам придется вернуться сюда и изменить интерфейс Observer; мы можем придется ввести новый параметр, или, возможно, придется изменить объект это здесь передано. нам нужно ввести новые области в этом класс.

это мой ConcreteSubject:

публичный класс ConcreteSubject расширяет тему { частное целое значение; частное строковое значение2; общественный недействительный setValue (целое значение) { это.значение = значение; notifyObservers (значение, ноль); } public void setValue2 (String value2) { это.значение2 = значение2; notifyObservers (ноль, значение2); } } У меня также есть 2 ConcreteObserver, но ConcreteObserver2 не хочет получать уведомления о первом поле «value» в ConcreteSubject. Я попытался ввести новый параметр следующим образом:

публичный интерфейс Observer { void update(значение T, значение U2); } а это другие мои занятия:

public class subject { // Observable частные наблюдатели List = new ArrayList(); public void addObserver (наблюдатель-наблюдатель) { наблюдатели.add(наблюдатель); } public void removeObserver (наблюдатель-наблюдатель) { наблюдатели.удалить(наблюдатель); } public void notifyObservers (значение T, значение U2) { for (Наблюдатель-наблюдатель: наблюдатели) наблюдатель.обновление(значение, значение2); } } --

публичный класс ConcreteObserver1 реализует Observer { @Override public void update(T value, U value2) { если (значение!= ноль) System.out.println("ConcreteObserver1 получил уведомление. " + value); если (значение2!= ноль) System.out.println("ConcreteObserver1 получил уведомление. " + value2); } } --

публичный класс ConcreteObserver2 реализует Observer { @Override public void update(T value, U value2) { если (значение2!= ноль) System.out.println("ConcreteObserver2 получил уведомление. value2: " + value2); } } Итак, это было первое решение, о котором говорил учитель, и оно вводило новый параметр, и это была моя реализация этого решения, но я не могу понять второе решение. (жирный текст)

Что он означает, когда он говорит: «Возможно, нам придется изменить переданный здесь объект»? Я думаю, что это бесполезно, потому что тип моего параметра в интерфейсе является общим, и я могу передать все, что захочу. также я не могу понять: «нам нужно ввести новые поля в этом классе». в какой класс? почему? как это может помочь ConcreteObserver2 получать уведомления о конкретном поле?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • PHP -процедурный стиль для Createlement, а не в стиле OOP? [закрыто]
    Anonymous » » в форуме Php
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Почему шаблоны ZMQ PUSH/PULL и PUB/SUB ведут себя по-разному для поздних участников?
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • ADB Push/Pull с помощью бара прогресса
    Anonymous » » в форуме Android
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Почему я получаю сообщение об ошибке «стиль элемента» не может быть вложенным в стиль элемента «стиль» "?
    Anonymous » » в форуме CSS
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Как я могу использовать пакет oop-python на Android?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»