我有一个关于我的小 IRC 框架设计的问题,只是为了学习 JAVA 事件和观察者..
第一个问题: http ://en.wikipedia.org/wiki/Observer_pattern#Critics
观察者模式被批评[6] 过于冗长,引入了太多错误,违反了软件工程原则,例如不提倡副作用、封装、可组合性、概念分离、可扩展性、统一性、抽象、资源管理、语义距离. 推荐的方法是逐渐弃用观察者,转而支持反应式编程抽象。
我应该在生产程序中使用观察者模式,如果被批评并且将来可能会被贬低?java.util.observer 总是一个不错的选择?
第二个问题:我有两个对象。服务器和频道
服务器.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");
}
在这种情况下,在频道中,我拥有所有公开的方法,并且这些方法都是从服务器类调用的......有更好的方法来管理事件处理吗?我在考虑 ObserverPattern,但我想它更多地用于 GUI 的东西,因此业务逻辑类..
干杯
我想问关于观察者的另一件事......为什么很多人不喜欢JDK观察者模式并建议实现你的?
为什么要重新发明轮子?
我看到的重新实现的观察者是JDK的同一个观察者......