Arv*_*nem 8 java instanceof design-principles
如您所知,"接口程序"设计原则广泛地倾向于使用超类型而不是具体类型或实现.
是否与在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
Run Code Online (Sandbox Code Playgroud)
使用instanceof与原理兼容吗?
编辑:
本质上,该应用程序是桌面RPG,Shadowrun的骰子模拟器.具体类型是不同的测试类型 - 成功测试,反对测试,扩展测试 - 它们的成功操作都有非常不同的因素和参数.超类型基本上包含骰子池!
Cos*_*atu 10
根据经验,您提到的"程序到接口"原则可以转换为:import 只有接口类型,对子类没有任何编译时依赖性.
因此,你的问题的答案肯定是否定的.由于您转换为具体类型,因此您不会对接口进行编程.
你自己说过:
我的应用程序收到了一个仓库.但是,Storehouse不是一个有用的类型.因为唯一真正有用的方法包含在具体类型中
换句话说,你的Storehouse抽象不是给你买任何东西......为什么你有它?
您是否可以Storehouse在每个具体类中创建抽象方法,然后让您在客户端代码中以相同的方式处理具体类型?这就是抽象的目标.
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |