符合“接口隔离原则”,但是却产生了过多的接口类,怎样解决呢?

Afritxia 2005-03-30 10:17:47
是否可以用抽象类来实现接口呢?例如:

interface Search
{
object[] Search();
}

interface PageViewer
{
void MoveNext();
void MovePrev();
void GoTo(int n);
}

为了降低接口的数量,使用抽象类(并不删除原来的接口定义):

abstract class AbstractSearchViewer : Search, PageViewer
{
}
...全文
350 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
接口和继承(包括所谓抽象类)的区别:

1. 接口不具有传递性。如果接口V有接口U,接口W有接口V,W并不具有接口U。而继承具有传递性。因此,继承是专门为了传递方法的定义以及内容的,具有延展性;接口则作了最大限度限制,仅实现一点点功能。

2. 不允许多重继承,但是允许多接口。这纯粹是编译器设计者的权宜之计。


看看5年的“流行”的程序设计教程,大多把继承看作制造混乱的魔鬼,结果一旦java和.net framework出来,里边出现了成千上万的继承,也没见那些写书的人放弃写书。如今,已经“面向方面”了,更为混乱、更为高级的方法已经逐渐占据主角地位了,但是写书的人的反应还是晚了几年。
  • 打赏
  • 举报
回复
钢筋水泥的丛林不是工人的脚踏出来的,而是设计师设计出来的。
  • 打赏
  • 举报
回复
仅仅是走的多了的那个路是野路子。
one_stone 2005-04-14
  • 打赏
  • 举报
回复
我觉得你使用抽象类的话,考虑一下能不能使用派生类,那样会解决很多问题!
nga96 2005-04-08
  • 打赏
  • 举报
回复
UP
bluesage 2005-04-01
  • 打赏
  • 举报
回复
我觉得楼上说的对,实践出真知,也许现在水平有限,但是还是必须去尝试,走的多了也就成了路。
aspcn 2005-03-31
  • 打赏
  • 举报
回复
楼主没有必要为这种事情烦恼。
这个实际上是一个经验问题,你有这个想法,平时写程序时注意注意,多看看别人比较牛B的源代码,再对比自己的,慢慢的你就会把握这个“度”了。
yohomonkey 2005-03-31
  • 打赏
  • 举报
回复
http://resource.51cmm.com/ProjectManage/No185.htm
看看这个文档也许会又感觉。好运
yohomonkey 2005-03-31
  • 打赏
  • 举报
回复
如果一个类里面真的有那么多方法和函数,应该没有问题;如果类很多,每个类的方法和函数非常少,楼主应该审视一下类的划分是否过细了。
bluesage 2005-03-30
  • 打赏
  • 举报
回复
如果一个类实现了过多的接口,本身就是种过度耦合,不符合面向对象的目标。
我觉得对于你的问题,也许是划分接口的时候太细了,也许有些接口是可以合在一起的(当然了,得符合逻辑)。
接口设计本身是很难的事情,接口设计不好,将来会有很大麻烦,这也许才是高手的价值体现
  • 打赏
  • 举报
回复
首先, 接口和抽象类的语法上用法有些类似的地方,但是从抽象来讲,请正是什么是is-a(比如说某个子类是一个抽象类的具体化),什么是is-like-a(某个实现了A接口的类,像一个接口).

如果用抽象类,一样会带来抽象接口类增多的问题...

再者,借口没有实现,抽象类可以有部分实现,但是,对隔离来说,用接口好一些...
Afritxia 2005-03-30
  • 打赏
  • 举报
回复
海蓝色,说的对。

但是我的接口里的函数太多了,最多能达到十几个函数。

所以我想把它们切开,但是又造成了过多的接口类...

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧