代码完全与接口的实现分离这句话怎么理解

paodan 2009-04-14 06:00:35
在设计模式和面向对象中经常看到“代码完全与接口的实现分离”这句话怎么理解?
...全文
355 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
静观风云 2009-05-19
面向抽象而不是具体实现。
回复
jiahehao 2009-05-18
。。。。很难理解吗?
回复
huatian008 2009-05-07
接口 --> 主板上pci插口
接口实现 ----> 插在pci插口上的板子
当你设计主板的时候你只要知道在那个地方放一个插口就行了(具体这个插口干什么那就看插什么板子了),没有必要知道这个插口上的板子是干什么的,也就是说主板的设计和板子的设计是分离的(代码与接口的实现分离,他们通过接口相连接)
显卡接口:
class GraphicsCard

char * getFactory() = 0;
char * getDate() = 0;
void * show(void * buf) = 0;
};
class Computer
{
GraphicsCard * m_GraphicsCard;
char * buf[1000];
public:
void work()
{
m_GraphicsCard->show(buf);
}
void * setGraphicsCard(GraphicsCard * card)
{
m_GraphicsCard = card;
}

}
上面定义了一个显卡接口,但是没有真正的显卡,Computer类显卡部分完全是根据显卡接口编写的,但是他不能工作,因为他没有真正的显卡,他只有一个接口,要让他工作你必须自己根据接口来实现一个真正的显卡然后插到上面他才能正常工作
回复
hanwangabc 2009-04-26
比如,某个函数f(),你在类A中实现了f(),当你要使用f()时,直接调用A::f()即可,不需要改变其里面的代码
回复
qqwx_1986 2009-04-26
作用是减少代码的维护代价
回复
mabo321 2009-04-14
我是这样理解的:

比如 有一个接口 是完成 排序功能的……
你自己的代码完全与接口的实现分离,
也就是这个排序接口的实现 可以使用不同方式来完成此功能(比如有一个好的算法可以进一步优化)
而在主题代码中 不需要任何修改……

回复
zhh157 2009-04-14
与“针对接口编程”异曲同工

简单来说,你不需要知道隐藏在接口后面的实现
因为那些实现很可能是易变的,你不能依赖接口的实现
否则,也就意味着,当接口的实现改变时
所有与接口实现有依赖关系的客户端代码也需要跟着变

如果,只依赖接口,而接口相对来说是比较稳定的
接口一旦设计好了就不能经常变动
否则,所有依赖代码都需要相应变动,那可能将是灾难性的
回复
ryuk33 2009-04-14
分离实现与接口。

当实现发生变化时,不需要修改接口
回复
相关推荐
发帖
模式及实现
创建于2007-09-28

5526

社区成员

C/C++ 模式及实现
申请成为版主
帖子事件
创建了帖子
2009-04-14 06:00
社区公告
暂无公告