ご存知のように、「インターフェイスへのプログラム」の設計原則は、具体的な型や実装ではなく、スーパータイプを広く好みます。
Javaプログラムでinstanceofを使用してスーパータイプから具象型を導出するという原則と一致していますか?
私のアプリケーションでは、Storehouse は、いくつかのプライベート変数とパブリックの getter および setter を持つ抽象スーパータイプ クラスです。
ConcreteStorehouseA は Storehouse を継承し、多くの具体的なメソッドと変数を持っています。ConcreteStorehouseB は似ていますが異なります。
私のアプリケーションは倉庫を受け取ります。ただし、Storehouse は操作するのに便利なタイプではありません。本当に有用なメソッドだけが具体的な型に含まれているため、次のように instanceof を使用します。
if (storehouse instanceof ConcreteStorehouseA) {
ConcreteStorehouseA concreteStorehouseA = (ConcreteStorehouseA) storehouse;
// perform operations on the concrete type's useful methods and variables
instanceof の使用は原則と互換性がありますか?
編集:
本質的に、このアプリケーションは、テーブル トップ RPG、Shadowrun のサイコロ シミュレーターです。具体的なタイプは、成功テスト、反対テスト、拡張テストなどのさまざまなテスト タイプであり、成功する操作の要因とパラメータはすべて非常に異なります。スーパータイプには基本的にダイス プールが含まれています。