アイスクリームの値段を計算する簡単なプログラムを書いています。
プロセスは非常に簡単です。コーンを選び、いくつかのフレーバーを選び、いくつかのトッピングを選んで、金額を支払います。
さまざまなコーンがたくさんあり、さまざまなフレーバーがたくさんあり、さまざまなトッピングがたくさんあります.
私の設計は、デコレータ クラスを使用して、注文方法と同様にアイスクリームを包むことです。
そのため、Cone、Flavor、Toppings のデコレータ クラスとともに、価格を示す「amount」属性を提供するベース Ice Cream クラスがあります。各クラスはアイスクリームのオブジェクトを取り、その量に追加するので、基本的にはさまざまな種類のアイスクリームを混ぜ合わせます。
実際のお金の取引を処理する別のクラスがあり、さまざまなオブジェクトを取得して価格を計算します。特に、アイスクリームを検出すると、アイスクリーム関連の処理を実行します。
さて、このデザインは問題ないように思えますが、アイス クリーム メーカーから出てきたオブジェクトがアイス クリーム タイプであるかどうかを確認するにはどうすればよいでしょうか。結局のところ、理論上はたくさんのデコレータで囲まれているので、そのクラスを尋ねると、おそらくアイスクリームだけではなく、Topping のようなものが表示されるでしょう。アイスクリームもスーパークラスである必要はありません。階層内のいくつかのクラスになる場合があります。
<topping ice cream>.Instanceof(Ice_Cream)
動作しないようです。
また、一連のクラスを使用して実装しました。このタイプのデザインを実現するために使用できるルビーの他の方法はありますか?