OO原则的疑惑!什么的编程才叫"针对接口编程,而非实现"?

sunpopoapollo 2005-03-04 05:00:23
我刚学OO编程,看到一条OO原则"针对接口编程,而非实现", 始终不能理解在实践中是如何遵守它,它在具体的编程中又是什么样子的? 还望请各位大师请教阿!!
...全文
1340 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
pennyliang 2005-09-09
  • 打赏
  • 举报
回复
see something about DIP(Dependence invert principle),not only access but implemention mean dependence.client of class and implentor of class all dependent on abstraction,then if the layer of abstraction is unchanged,class and its client can change independently.
dapanda 2005-08-22
  • 打赏
  • 举报
回复
学到了不少。。
cdstarnet 2005-08-21
  • 打赏
  • 举报
回复
星品网(http://www.cdstar.net)1000多款最新软件游戏和影视光盘促销,每张原装光盘4元,24H送货上门,进来看看!
yao_min 2005-08-17
  • 打赏
  • 举报
回复
函数调用应该依赖于接口,而不应该依赖于实现,主要是说面向对象中的对象抽象和方法提取,不用依赖于对具体对象的调用,而应该使用抽象对象(基类),这些原则也不用过分依赖
社会栋梁 2005-08-17
  • 打赏
  • 举报
回复
简单理解public:的是接口
private中的是实现
ww09124 2005-08-03
  • 打赏
  • 举报
回复
是不是说要达到高内聚低耦合

达到程序结构的稳定性和程序的灵活和可扩展性
axin1102 2005-08-03
  • 打赏
  • 举报
回复
同意 stonespace(stonespace) 的看法。这样可以保证类的稳定性,并遵循开发封闭原则。
ww09124 2005-08-01
  • 打赏
  • 举报
回复
抽象出,相同类型对象的最基本,操作共性和共有属性

构件抽象基类,也就是接口
happyjun2000 2005-07-06
  • 打赏
  • 举报
回复
petshop3.0说的很详细,很经典。
lovebanyi 2005-07-05
  • 打赏
  • 举报
回复
受益非浅啊. 我是在看petshop3.0的时候理解的.以前知道好处.但是不懂用
zyoracle1978 2005-05-15
  • 打赏
  • 举报
回复
首先要明确什么是实现继承,什么是接口继承。
实现继承的目的是为了代码重用,即父类定义了一个方法,实现了一个具体功能,子类通过继承同时也具备了同样的功能,这里不涉及到多态。接口继承是指复写父类的方法,但是提供该方法的不同的子类实现,目的是主要为了使用多态。
针对实现编程,主要是为了减少冗余代码,更方便的实现功能扩充,对程序的高内聚低耦合没什么帮助。针对接口编程,父类和子类分别提供不同的接口实现(或者父类是纯虚),这样在应用中一个基类指针可以用来表示不同的类对象,通过多态提供足够的灵活性。
针对接口编程而不要针对实现编程,或者使用接口继承而不是实现继承,是颇为极端的说法,或者是作者为了突出强调接口的说法。实际应用中,都是两者结合的,目标是建立灵活高效的程序。
很多时候这些都是矛盾的,需要程序员自己去体会,比如多用组合少用继承,谁都知道组合更灵活,但是随着类的增多,关系更复杂了,而这种关系比继承体系的关系更难把握。
自然框架 2005-05-14
  • 打赏
  • 举报
回复
先举一个实例吧 —— 主板

就是计算机里的主板。

主板上有许多插槽 —— AGP PCI ...... (其他的记不住了:))

插槽就是接口

插槽上可以插好多东东 cpu 显卡 声卡 内存 硬盘 键盘 鼠标

只要是符合接口协议的东东都可以识别。


比如 PCI(主板上有好几个一样的插槽,一般是白色的) 它上面可以查显卡、声卡、网卡、猫、电视卡等等。

主板(板载声卡显卡网卡的除外)

并没有实现这些功能(显示图像、发出声音、上网、接收电视信号)

需要你自己网上插卡,查什么卡你的电脑就有了什么功能。


呵呵 应该差不多了吧。

这是我对接口的理解。



asp.net用过吗?

里面的DataGrid 用过吗?

DataGrid 就相当于主板。

使用的时候要先设置列的信息,模版列了什么的。

呵呵

sc_arhat 2005-05-13
  • 打赏
  • 举报
回复
学习中
autoegg 2005-05-09
  • 打赏
  • 举报
回复
关于这一点,在《COM技术内幕》中有比较详细的论述。
autoegg 2005-05-09
  • 打赏
  • 举报
回复
如果是C++的话,“接口”和“纯虚基类”可以认为是几乎等同的,这样楼主实现起来不就有标准了?
李飞侠 2005-04-22
  • 打赏
  • 举报
回复
IMyInterface aInstance = TheInstanceFactory.getInstance();

我的理解就是这里所说的一切都是针对软件开发当中模块间的关联复杂度的问题。
大家都知道要“低耦合,高内聚”的原则,这样一个模块的变动对另一个模块影响
最小。这样设计的系统的扩展伸缩性能得到很大的提高。

对于一些项目出现经常性的变动,良好的设计可以把复杂度降到最低。
flysharker 2005-04-21
  • 打赏
  • 举报
回复
想想在最早的c上的函数传递参数的时候得地址传递和值传递,就是型参和值参
bill_carry 2005-04-21
  • 打赏
  • 举报
回复
针对接口编程也就是使你程序通用行更好了。一般情况下,如果实现接口的方法代码改变,不要对客户端代码进行修改,这样应该说是比较好的。这个也要在实践中不停的锻炼自己,从中找出一些经验和体会,我个人就是深有体会的。另外现在也有很多成熟的设计模式可以供参考。
Fusuli 2005-04-20
  • 打赏
  • 举报
回复
"针对接口编程,而非实现"也有个度的问题,没有必要所有的类都先写个接口然后实现它再在别的地方针对接口编程,太繁琐,我一般在下面几个情况下才会用这种方法
1,跨层调用的类
2,有可能变化的类
3,通用性较强的类(比如说数据访问或是一些业务无关的算法)
sgd 2005-04-20
  • 打赏
  • 举报
回复
针对接口编程是面向对象的一个原则,在编程之前要确定功能,而功能就是在接口中定义的
加载更多回复(35)

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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