栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

经常使用instanceof是一种好习惯吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

经常使用instanceof是一种好习惯吗?

假设我正在写一些库存代码:

public void showInventory(List<Item> items) {    for (Item item : items) {        if (item instanceof ContainerItem) { // container display logic here        }        else if (item instanceof WeaponItem) { // weapon display logic here        }        // etc etc    }}

这样可以编译并正常工作。但是它错过了面向对象设计的关键思想: 您可以定义父类来做一般有用的事情,而让子类填充特定的重要细节。

以上的替代方法:

abstract class Item {    // insert methods that act exactly the same for all items here    // now define one that subclasses must fill in themselves    public abstract void show()}class ContainerItem extends Item {    @Override public void show() {        // container display logic here instead    }}class WeaponItem extends Item {    @Override public void show() {        // weapon display logic here instead    }}

现在

show()
,在所有清单显示逻辑的子类中,方法都有一个地方可以看。我们如何访问它?简单!

public void showInventory(List<Item> items) {    for (Item item : items) {        item.show();    }}

我们将所有特定于项目的逻辑保留在特定的Item子类中。这使您的代码库更易于维护和扩展。它减少了第一个代码样本中长for-
each循环的认知压力。它

show()
可以在您尚未设计的地方重复使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428214.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号