您的位置:首页 > 其它

接口版本演化引发的思考一

2006-09-03 23:19 218 查看
有一条基本的设计原则是“对接口编程”,什么意思呢?就是首先通过接口定义协定,也就是接口能够对外提供的功能描述,然后通过具体的类实现该接口。下面是个实现举例

1class IA
2class A1 : public IA
7class A2 : public IA
2 IA* a1 = new A1();
a1->OperationA();
delete a1;

IA* a2 = new A1();
a2->OperationA();
delete a2;

如果由于需求的变更导致接口IA必须提供新的服务,这个时候就有两种选择:一种是直接在接口IA中加入该服务,另一种是通过接口IA继承新的接口类型(比如IB),在IB中加入该服务。具体实现如下:

1class IA
2class IB : public IA
2class IA
2{
3public:
4 virtual void OperationA() = 0;
5 virtual void OperationB() {}
6};
这样具体实现类型A如果不需要改变该新服务(OperationB)的默认实现,就不需要提供该服务的实现。

纯虚函数的接口演化方案和提供默认实现的接口演化方案对应c#中的接口和抽象类之间的区别。
有兴趣的朋友可以看看MSDN Library for Visual Studio 2005上对两者的使用描述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: