2010-11-16 3 views
0

Поддержка У меня есть класс Java Bean, который строго держит экземпляра поля:Уместно ли использовать шаблон наблюдения?

class College 
{ 
    building = "Burruss"; 
    dean = "Mr. Bergess"; 
    schools[] String = {"College of Engineering", "Business School"}; 
    valedictorian = "Mr. Smart Guy"; 
    ... 
    ... 
    ... 
} 

Предположим, что для каждого изменения в экземпляре колледжа, сообщение отправлено:

class messageSender 
{ 
     ... if (College values have changed) 
       Send that instance's fields in byte[] form 
} 

Предположим, что у меня есть Swing GUI (Java), который также проверяет изменения в колледже

class myGUI 
{ 
     ... if (College values have changed) 
       Alert each individual JTextField the updated field 
} 

Является ли шаблон наблюдателя актуальным здесь? Если в колледже было 1000 переменных, мне пришлось бы включить метод notifyObservers() для каждого изменения значений полей экземпляра!

Например, для этих 1000 переменных у меня есть 1000 методов настройки. Каждый метод сеттера должен иметь вызов notifyObservers().

Это право или есть лучший способ?

ответ

3

Если у вас есть класс с 1000 полями, у вас, вероятно, есть другие, более уместные проблемы с дизайном.

Это не ненормально для каждого из ваших методов изменения поля (сеттеров) для вызова notifyObservers(). Вы можете попытаться инкапсулировать столько же состояния и логики, сколько сможете; скрытие информации - это просто хороший дизайн.

+0

Опишите более «соответствующие проблемы с дизайном» для класса с 1000 полями. Класс строго для хранения данных небезопасен? –

+1

@ Карло: Нет, я уверен, что Java сможет справиться с этим. Очень просто, что даже простая фасоль должна иметь много свойств. Обычно это указывает на то, что некоторая нормализация или, по крайней мере, дальнейшее разделение на другие классы будут полезны. –

0

Я думаю, что наблюдатель нормально здесь, но Слушатель лучше, потому что 1. Вы можете создать несколько типов слушателей 2. Когда событие происходит, передается в метод обработчика слушателя, так что он может знать, что на самом деле произошло. Например, он может содержать одно из 1000 полей, упомянутых в комментарии Марка.

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