3

Pharo Smalltalk で利用可能なアナウンス フレームワークを使用して、従来の Smalltalk-80 依存/変更/更新メカニズムを使用する理由はまだありますか?

4

2 に答える 2

5

主な違いは、アナウンスメントは、イベントのパブリッシャーからサブスクライバーに伝達されるファースト クラスのオブジェクトであるのに対し、古い依存関係メカニズムではシンボルのみが送信されることです。したがって、実際のオブジェクトは多くの柔軟性を追加しますが、古い pub/sub アプローチの優雅さとシンプルさを維持します。

于 2013-03-27T18:31:30.430 に答える
3

基本原則は同じですが、Announcements フレームワークはより柔軟で、IMHO よりエレガントです。たとえば、アナウンスの階層を定義して、例外を処理するのとほとんど同じように処理できます。Ann2が のサブクラスであると仮定すると、次のAnn1ことができます。

anObject when: Ann1 do: [...]

ブロックは両方のクラスのアナウンスをキャプチャします。もう 1 つのすばらしい点は、1 つのアナウンスではなく一連のアナウンスに対してハンドラーを定義できることです。Ann3とがアナウンスであると仮定するとAnn4、次のことができます。

anObject when: Ann3, Ann4 do: [...]

これらのアナウンスのいずれかがトリガーされると、ブロックが評価されます。最後に、イベントがオブジェクトになったので、動作をオブジェクトに委譲できます。これは非常に便利です。このトピックに関するVassili Bykov による一連の投稿があります。

元の質問に戻ります。私が考えることができる唯一の「欠点」は、シンボルを使用するだけでなく、クラスを定義する必要があることです。しかし、正直なところ、アナウンスで得られるものに比べて労力は非常に少ないので、私にとっては簡単です. アナウンスメントを使わない理由が思いつきません。

HTH

于 2013-03-27T19:04:49.280 に答える