对接口类和实现类的理解:一个接口有多个实现类,当调用接口中的方法时,如何判定用的是哪个实现类?

一个接口有多个实现类,当调用接口中的方法时,如何判定用的是哪个实现类?

1. 直接new一个子类实例,这样肯定知道用的哪个实例。
2. 定义接口类型的变量,用某个实例去初始化,这样也可以确定用的哪个实例。

代码实例:

接口类:

public interface CsBaseService {
    //获得总记录条数
    public int getTotalCount(JDBCBean jdbcBean);
}

实现类一:

public class CsLastUpdateService implements CsBaseService {
    @Override
    public int getTotalCount(JDBCBean jdbcBean) {
        return 1;
    }
}

实现类二:

public class CsRelateModelService implements CsBaseService {

    @Override
     public int getTotalCount(JDBCBean jdbcBean) {
         return 2;
    }

}

调用的时候可以确定用的是哪个实现类:

public class RelateModelController  extends BaseController{

       //自动装配实现类二(这里就确定了调用的是实现类二 CsRelateModelService)
       @Autowired
       private CsRelateModelService relateModelService;

        //初始化实现类2,关键在这步,指定relateModelService为beaseService
       initParamProcess(relateModelService,new RelateModel(),new Page());

        //然后直接调用实现类2的方法,输出为2
       int totalCount = beaseService.getTotalCount(jdbcBean);
}

肯定有人抱怨:公司分下来开发任务,要求遵守接口类和实现类编写规范,在编码时发现为什么非得写一个接口,再写一个接口的实现类,要做的功能需求变多了以后,编码工作量也就多了,而不是直接调用某类里的方法,多写代码重复劳动,不如直接调用来的干脆,好像没什么区别的感觉。

打个比方:台式机的主机箱里面,有显卡插槽(接口类),显卡的更新换代是很快的,根据流行的游戏,对显卡的要求更高了,于是换显卡(实现类),直接拔掉旧显卡,插入新显卡就OK了。

为什么会抱怨再打个比方:抱怨多写代码重复劳动也不是没有道理的,比如平时不玩游戏,只是看看网页和电影(小项目),用的是笔记本电脑,内置显卡是焊死在主板上的(不写接口类和实现类也是可以的),显卡虽然不能更换,但也可是满足用户需要的。

所以总结:如果项目确实没有业务拓展的需要,可以不用写接口类和实现类那一套,不如直接调用来的干脆。

但一些大一点的项目都会考虑后期维护升级的拓展性和面向对象编程思想(为了装逼)而要求遵守接口类和实现类编写规范。

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值