【发布时间】:2012-02-16 21:58:00
【问题描述】:
我有一个关于我的小IRC框架设计的问题,只是为了学习JAVA事件和观察者..
第一个问题: http://en.wikipedia.org/wiki/Observer_pattern#Critics
观察者模式被批评[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");
}
在这种情况下,在频道中,我将所有方法公开,并且从服务器类调用这些方法... 有更好的方法来管理事件处理吗?我在考虑 ObserverPattern,但我猜它更多用于 GUI 的东西,因此是业务逻辑类..
干杯
我想问关于观察者的另一件事......
为什么很多人不喜欢 JDK 观察者模式并建议实现你的?
为什么要重新发明轮子?
我看到的重新实现的观察者是 JDK 的同一个观察者...
【问题讨论】:
标签: java model-view-controller events observer-pattern raiseevent