を上げるために、私はちょうどJAVAイベントとオブザーバを学習するための私の小さなIRCの枠組みの質問についての設計を、持っている最良の方法..JAVA - イベント
最初の質問: http://en.wikipedia.org/wiki/Observer_pattern#Critics
Observerパターンがありますカプセル化、合成、概念の分離、スケーラビリティ、統一性、抽象化、資源管理、意味論的距離の促進など、あまりにも冗長で、あまりにも多くのバグを導入し、ソフトウェア工学の原則を侵害すると批判した[6]。推奨されるアプローチは、反応性プログラミング抽象化を支持してオブザーバーを徐々に非難することです。
私は、プロダクションプログラムでオブザーバーパターンを使用する必要があります。これは将来批判され、おそらくは削除されるでしょうか? java.util.observerは常に良い選択ですか?
2番目の質問:2つのオブジェクトがあります。サーバーとチャンネル
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");
}
は、チャネルに私はすべてのメソッドを公開する必要があり、それらがサーバーから呼び出されますクラス... イベント処理を管理するより良い方法はありますか?私は多くの人が嫌いなのはなぜ別のものの点のオブザーバー... をお願いしたいと思います
乾杯
..私はObserverパターンで考えて、私はそれはGUIのものので、ビジネスロジッククラスにより使用さだと思いますJDK Observerパターンを実装し、あなたの実装を提案しますか?
なぜホイールを再発明するのですか?
私が見ている再実装されたオブザーバは、JDKの同じオブザーバです。
私の最初の質問は、すべてのメソッドpublicを持っている点です。私はカプセル化のための良い方法ではないと思うので、関連する各チャンネルに 'public void spamMessage(message)'のようなメソッドを書く必要があります。そのサーバー... – Kaiser69
もちろん、パブリックメソッドはカプセル化を中断します。その作品をチャンネルに渡すことを好むとは思わないでしょうか?そうすれば、サーバーはイベントをリスナーに渡すだけで、それぞれが必要な処理を行います。 –
はい、私はこの方法で動作する小さなフレームワークを書きました。しかし、少し簡単です(静的なタイプミス、パブリック/プライベートなし)。 - リスナー/イベントリスナーを監視して実装するためのヒントを提案できますか?ありがとう – Kaiser69