У меня есть вопрос относительно дизайна моей маленькой IRC Framework, просто для изучения событий и наблюдателя JAVA.
Первый вопрос: http://en.wikipedia.org/wiki/Observer_pattern#Critics
Шаблон Observer подвергнут критике[6] за то, что он слишком многословен, привнес слишком много ошибок и нарушает принципы разработки программного обеспечения, такие как недопущение побочных эффектов, инкапсуляция, компоновка, разделение понятий, масштабируемость, однородность, абстракция, управление ресурсами, семантическая дистанцияРекомендуемый подход заключается в постепенном отказе от наблюдателей в пользу абстракций реактивного программирования.
Мне следует использовать шаблон наблюдателя в производственной программе, если его критикуют и, возможно, откажутся в будущем?java.util.observer всегда хороший выбор?
Второй вопрос: у меня есть два объекта.Сервер и канал
Server.java
public Server {
public Server () {
// Some stuff
channelList = new ArrayList<Channels>();
}
public Channel searchChannel(String channel) {
// Implements searching channel
}
public void parseMessage() {
if (someCondition1)
onEvent1();
elseif (someCondition2)
onEvent2();
}
public void onEvent1(String channel, String param) {
channel = searchChannel(channel);
channel.onEvent1(param);
}
public void onEvent2(String channel, String param) {
channel = searchChannel(channel);
channel.onEvent2(param);
}
}
** Channel.java **
public Channel {
public Channel(Server server) {
// Some stuff
this.server = server;
}
public void onEvent1(String channel, String param) {
// Stuff for Event1 fired from Server
server.responseAtEvent("blablabla");
}
public void onEvent2(String channel, String param) {
// Do stuff for Event2 from Server
server.responseAtEvent("blablabla");
}
В этом случае в канале Iесть все методы public и те, которые вызываются из класса Server ... Есть лучший способ управлять обработкой событий?Я думаю о ObserverPattern, но думаю, что он больше используется в графическом интерфейсе, таким образом, класс бизнес-логики ..
Cheers
Я хочу спросить еще кое-что о Observer ... Почему многолюдям не нравится шаблон JDK Observer и предлагаете реализовать свой?
Зачем изобретать велосипед?
Повторно внедренный наблюдатель, которого я вижу, является тем же наблюдателем JDK ...