提供对外接口时,要注意的地方
本篇仅是个人经验的总结,以及自己的看法。欢迎指正和讨论。
在实际工作中,如果你提供的接口,需要被下游多个部门依赖。那么,在接口设计的时候就一定要考虑一个问题:如何在给其他人提供接口后,增加或优化自身代码时,不会束手束脚?
以下是我的一些实际经验:
1. 对外不要直接提供实现功能的类,而是提供对应的接口类和一个创建/删除对象的函数
例如,对外提供三种图形(省略构造和析构函数):
// 反例
class Shape
{
public:
virtual void Draw() = 0;
};
class Square : public Shape
{
public:
virtual void Draw();