谁能告诉我这是一种什么样的结构,这样做的好处是什么?

忆瑶 发布于 2013/05/17 14:55
阅读 607
收藏 1

RT

今天看代码的时候发现这么一种结构,classB同时实现了interface1和继承了classA,classA的方法实现了interface1的所有方法,但是这两者之间并没有其他直接的关系,这样一来ClassB则只需要实现interface2里的方法,请问这是一种什么样的结构?这样做有什么好处?

加载中
0
泡不烂的凉粉
泡不烂的凉粉

接口A,对应功能模块1, 接口2对应功能模块2,

class A,实现的是在 模块A中的所有功能,但是 class A 并不需要和模块沟通,Class B 需要类似于A的功能,并且需要与模块A和B沟通,所以直接继承了 Class A, 并实现接口B的要求,就可以沟通了。

1
忆瑶
忆瑶

引用来自“贝爵宏”的答案

诶,你该多想想

我就是现在想不出来了才问的
MZHS
MZHS
回复 @贝爵宏 : 父类就像亲爹,想拿到他的东西就继承他 接口就像干爹,想吃里扒外就实现他
贝爵宏
贝爵宏
单继承,多实现,你懂了吧。
1
java9
java9
适配器模式
0
贝爵宏
贝爵宏

诶,你该多想想

0
E-leven11
E-leven11
好处就是实现 interface1的方法已经被classB的父类classA实现,不用再手动重复实现了。classB继承了classA的所有方法,其实就是相当于classB已经实现interface1的方法了,只是表面上看起来不用实现interface1而已
0
skyline520
skyline520
其实我赶脚 不必追求与什么模式,重点看这个结构解决了什么问题,可能你会创建一种新的模式哦 哈哈,我有时就会写一些"变异"的单例类,解决过不少问题
0
忆瑶
忆瑶

引用来自“E-leven11”的答案

好处就是实现 interface1的方法已经被classB的父类classA实现,不用再手动重复实现了。classB继承了classA的所有方法,其实就是相当于classB已经实现interface1的方法了,只是表面上看起来不用实现interface1而已

这个是很明显的一个好处,但是还有其他么?为什么我不直接把classA的实现放在classB里去做呢?除了classA这个类可以单独在其他地方被使用外还有其他的用途和优点么?

还有哦~~这算是一种什么有名字的结构/模式之类的么?还是仅仅就是一个实现的技巧?

夏涌升
夏涌升
发布文章接口 登录接口 充值接口 发布文章到phpwind程序的论坛类 泡xx论坛类(用phpwind建立的) :继承上面的类,实现上上面的接口
0
忆瑶
忆瑶

引用来自“skylline”的答案

其实我赶脚 不必追求与什么模式,重点看这个结构解决了什么问题,可能你会创建一种新的模式哦 哈哈,我有时就会写一些"变异"的单例类,解决过不少问题
这不是在学习阶段么,那么看到这种之前没有用过的结构,当然是想知道作者为什么要这么用,在什么样的情况下使用,这样做能解决什么样的问题。 如果你知道,请不吝赐教!
0
王瑞平
王瑞平
这是装饰模式
0
傅小黑
傅小黑

举个栗子,未必很恰当啊

classA  =  baseModel,定义模型类的一些基础信息,比如连接数据库

classB  =  userModel,一个User的模型实例,继承baseModel

interfaceA = baseModelInterface,定义模型类的基础接口,比如以后我不要关系型数据库,用mongo这种文档类型的,那么baseModel里连接数据库的就没用,需要自己写连接到mongo,因此需要遵循baseModelInterface满足继承mongodb模型类的实例有效(他们可能继承baseModel)

interfaceB = relationModelInterface,定义关联模型的接口,其实就是扩充另外的功能了。

我只是这样一种解释。。未必很适合。。不过从效果上看,模型类可以满足不同的数据源了,也可以扩展成各种复杂的模型

。。。。随意一说,勿拍砖

返回顶部
顶部