アイスクリームの価格を計算する簡単なプログラムを書いています。ルビー:デコレータ付アイスクリーム
このプロセスは非常に簡単です:コーンを選んで、いくつかの味を選んで、トッピングを選んで金額を払ってください。
さまざまなコーンがあり、さまざまな種類のフレーバーがあり、さまざまなトッピングがあります。
私のデザインは、あなたが注文する方法と同様にアイスクリームを包むためにデコレータクラスを使用することです。
私は、コーン、フレーバー、トッピングのデコレータークラスと一緒に、物量がどれくらいかを示す「量」属性を提供する、ベースのアイスクリームクラスを持っています。各クラスはアイスクリームのオブジェクトをとり、その量に追加するので、基本的にはさまざまなタイプのアイスクリームを組み合わせてマッチさせます。
私は実際のマネー取引を扱う別のクラスを用意しています。これはさまざまなオブジェクトをとり、価格を計算します。特に、アイスクリームが見られる場合、アイスクリーム関連のプロセスが実行されます。
今、このデザインはうまくいっていますが、アイスクリームメーカーから出てくるオブジェクトがアイスクリームタイプであるかどうかを確認するにはどうすればよいですか?結局のところ、それは理論的にはデコレータの束で包まれているので、あなたがそのクラスを尋ねるならば、ちょうどアイスクリームではなくトッピングのようなものを見るでしょう。アイスクリームはスーパークラスでは必要ありません。階層内に複数のクラスが存在する可能性があります。
<topping ice cream>.Instanceof(Ice_Cream)
は動作していないようです。
また、クラスのセットを使用して実装しました。このタイプのデザインを実現するために私が使うことのできるルビの他の方法はありますか?