私はしばしば、自分が制御していないクラスにメソッドを追加したいという問題に直面します。たとえばprettyPrint
、統一された API を持たないさまざまなオブジェクト タイプ (特殊な__str__
メソッドなど) を操作できる関数が必要な場合があります。
このNice
言語R
は、ビジター パターンを適切に回避するマルチメソッドを使用してこれを実現します。たとえばR
、機能がありplot()
ます。個々のプログラマーは、新しいクラスを作成してデータ型 (ネットワーク グラフや株価情報データなど) を定義できます。二次的なユーザー/プログラマーは、グラフや株式ティッカー コード、または他のプロット関数のコードにアクセスできない場合でも、プロット関数を記述して機能を埋めることができます。
後で多くの機能を追加したいことを考えると、使用class.method()
は不可能に思えます。class_plot()
型ごとにたくさんの関数を用意するのも悪い考えのようです。型をチェックする 1 つの大きなplot()
関数を定義することは拡張できません。
マルチメソッドの代替手段は何ですか? 特に、Jython と Scala で動作する可能性のあるデザインに興味があります。