接口 抽象类
接口 抽象类
勤奋的蚂蚁 发表于10个月前
接口 抽象类
  • 发表于 10个月前
  • 阅读 5
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

今天看文章说到工作中对于接口和抽象类使用是否按照一定标准,仔细想了想,接触的几个项目,都没有按照一定标准使用.

网上搜索了一番,关于使用标准各有各的说法,不过大多数人从类可以继承和接口不可以继承,只可以实现方面考虑,即类的继承认为是"is-a",接口认为是"like-a"这么两种形式.

有的认为接口是一种类似框架的存在,即实现接口的对象可以没有任何关联,完全是不同的类别.

比如说猫,狗可以认为是动物,都有叫这样的行为,叫的内容不同,一个喵喵,一个汪汪,那么可以把叫抽象出来,具体的叫声有子类实现;这样定义为抽象类;再者以飞为例,鸟和飞机都可以飞,但是属于不同类别,则定义为接口.但是个人认为如果把叫的范围扩大一些,不仅仅局限于动物,那么是不是就可以定义为接口了;如果把飞范围缩小些,比如大雁、麻雀,那么是不是可以定义为抽象类了。如此说来,定义是接口还是抽象类,完全由对象的范围来决定,即由项目中的对象来决定.

当然接口需要遵循ISP原则,全称“ISP接口隔离原则”,以下从描述摘自http://baike.baidu.com/item/isp/4807182#viewPageContent

1.使用多个专门的接口比使用单一的总接口要好

2. 一个类对另外一个类的依赖性应当是建立在最小的接口上的

3. 一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。

简单来说就是接口要合乎大小,不要胖,不要瘦.

实现方法主要以下两种:

1、使用委托分离接口.
2、使用多重继承分离接口.

这个明天再详细研究.

总而言之,接口和抽象类的使用规则建立在对象基础上,“is-a”、“like-a”是比较容易理解区别的,需要具体问题具体分析.

 

标签: 接口 抽象类
共有 人打赏支持
粉丝 2
博文 25
码字总数 5802
×
勤奋的蚂蚁
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: