如您所知,“程序到接口”设计原则广泛偏爱超类型而不是具体类型或实现。
在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是否符合原理?
编辑:
本质上,该应用程序是桌面角色扮演游戏 Shadowrun 的骰子模拟器。具体类型是不同的测试类型——成功测试、反对测试、扩展测试——它们的成功运行都有非常不同的因素和参数。超类型本质上包含骰子池!