以able为后缀的接口,设计上有没有什么共性
常见的接口背后都有所熟悉的设计模式,比如Comparable,Clonable,Callable,Runnable...,这些able后缀结尾的接口,背后是否隐含了某些共性的设计?不考虑硬套模式的说法,该在什么时候设计自己的Xxxable的接口呢? 先谢各位大佬 ~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
其实不是以
able
结尾,而是这些接口都是形容词,而able
正是英语中一个表示形容词的词缀。ible
、al
、ian
、ent
、ed
等等这些也是常见的形容词词缀。“形容” 某个类型应该哪些特征的。我们说这个类是
可被比较的
、可被克隆的
等等,它是修饰、而不是分类。表示 “分类” 的接口当然也有,那就是名词形式了。
原则上只有这两种词性可以被用作接口名。
设计模式 Mixin (混入类)
接口本身就是共性的抽象啊。讲的直白点就是公共特性做封装。
比如,
String要做比较,Integer也要做比较,于是把比较这个特性封装成Comparable接口,只有实现了Comparable接口就可以做比较了。
你可以自己定义一个DataExist接口
你的Service只有继承了这个接口,ServiceImpl实现了这个接口,就可以查询数据是否存在。
使用java8的接口default特性,甚至接口实现都可以不用做。
个人感觉是对一类具有某种能力的类的抽象,没有什么设计模式。