Pharo Smalltalk で利用可能なアナウンス フレームワークを使用して、従来の Smalltalk-80 依存/変更/更新メカニズムを使用する理由はまだありますか?
2 に答える
主な違いは、アナウンスメントは、イベントのパブリッシャーからサブスクライバーに伝達されるファースト クラスのオブジェクトであるのに対し、古い依存関係メカニズムではシンボルのみが送信されることです。したがって、実際のオブジェクトは多くの柔軟性を追加しますが、古い pub/sub アプローチの優雅さとシンプルさを維持します。
基本原則は同じですが、Announcements フレームワークはより柔軟で、IMHO よりエレガントです。たとえば、アナウンスの階層を定義して、例外を処理するのとほとんど同じように処理できます。Ann2
が のサブクラスであると仮定すると、次のAnn1
ことができます。
anObject when: Ann1 do: [...]
ブロックは両方のクラスのアナウンスをキャプチャします。もう 1 つのすばらしい点は、1 つのアナウンスではなく一連のアナウンスに対してハンドラーを定義できることです。Ann3
とがアナウンスであると仮定するとAnn4
、次のことができます。
anObject when: Ann3, Ann4 do: [...]
これらのアナウンスのいずれかがトリガーされると、ブロックが評価されます。最後に、イベントがオブジェクトになったので、動作をオブジェクトに委譲できます。これは非常に便利です。このトピックに関するVassili Bykov による一連の投稿があります。
元の質問に戻ります。私が考えることができる唯一の「欠点」は、シンボルを使用するだけでなく、クラスを定義する必要があることです。しかし、正直なところ、アナウンスで得られるものに比べて労力は非常に少ないので、私にとっては簡単です. アナウンスメントを使わない理由が思いつきません。
HTH