浅谈 关于接口和继承的问题

  • 普通类 (自己的事情自己做,或者覆盖父类的行为自己干(重写))

  • 抽象类(职责分担)

  • 接口 (规范)

它都统称为类,在类中其实就存在两样东西:属性一个和方法(行为,函数)。

继承

目的:职责分担 & 单一职能

  • 为什么要继承?

    • 可以达到封装,复用的目的。好比你为什么要爸爸,要干爹?

      • 因为爸爸,干爹可以帮你做一些事情,起到一个职责分担的作用。

  • 继承什么?

    • 类中只有属性和方法,继承也就去继承父类的属性和行为。

  • 访问修饰符,private public protected 缺省的。

问题1:为什么一个类实现多接口?

  • 你未来接触ssm框架,或者springboot,或者微服务,大部分的情况下都是面向接口编程。

面向类编程

@Service

@Slf4j

public class CollectServiceStream {

}

@Service

@Slf4j

public class CollectServiceDBStream {

}

面向接口编程

  • ICollectService(标准和规范)

  • CollectAllServiceImpl(实现者)

在开发中,其实现在这种写法就是面向接口编程的写法,很多时候有一个这样思考,这个接口很无聊。好像没有什么用处?其实在开发中,很多时候接口确实只有一个实现类,但是你能代表未来你业务不扩展吗?

  • 假如你现在做了爸爸或者妈妈

    • 规范和约束 goShop()

  • 大儿子,

    • 实现这个规范和约束 goShop() --- 开车

  • 小儿子

    • 实现这个规范和约束 goShop() --- 走路去

在开发一个接口看上去确实没什么用处,但是在未来的生成和开发如果一旦扩展,那么接口的真正的意义就体现淋漓尽致。你就知道接口为什么是标准和规范,就如同上面的爸爸妈妈说去逛街一下。我只是把逛街的行为定义着,但是不实现,有若干个儿子去实现。如果没有这种规范,那么所以儿子对象就杂乱无章

什么样子的情况下使用接口

  • 一个业务有多种实现的情况下

  • 业务和代码进行升级,一定是扩展子类,不要在原来的子类上进行覆盖编写。

  • 达到一个高内聚(对内修改关闭,对外修改扩展),低耦合

问题2:为什么在底层框架代码看到一个类实现很多接口?

  • 平时写代码,还是很少这样的状况,甚至你未来很长时间都不会写一个类实现多个接口。

  • spring 底层你会发现一个类会实现很多的接口。是很常见方式。为什么这样做呢?

作用

  • 化整为零

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,

        MessageSource, ApplicationEventPublisher, ResourcePatternResolver {

        }

  • 保持类的单一职能,和 方便扩展

100个需要子类实现的方法?

  • 各种干爹1 - AbtractXXXXXX implmennets EnvironmentCapable

  • 各种干爹2-- AbtractXXXXXX implmennets ListableBeanFactory

  • 各种干爹3-- AbtractXXXXXX implmennets HierarchicalBeanFactory

  • 各种干爹4-- AbtractXXXXXX implmennets MessageSource

  • 各种干爹5-- AbtractXXXXXX implmennets ApplicationEventPublisher

public class 飞哥(干儿子) extends AbtractObject  {

    

}

问题3:为什么开发中一个类继承一个父类还要实现接口?

  • mybatis

    • tk-mybatis (二次myabtis封装)

    • mybatis-plus (二次myabtis封装)

    • mybatis-generator (没有)

      • mapper

      • mapper.xml

  • jpa

  • jdbctemplate

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值