接口扩展的有关问题

接口扩展的问题
接口的重要意义在于扩展性

假设设计这样一个审计接口:
class AuditInterface
{
publci:
  virtual void audit(char* username, char* event, char* time) = 0;
}

class AuditImpl : public AuditInterface{...}


问题是假如某系统的审计项目不是username、event、time这三项了,那么就只能再设计新的接口,个人觉得不利于软件的维

护和扩展,有没有更好的方式呢?

个人考虑将audit的参数设置为一个抽象类型Item
virtual void audit(Item* item) = 0;
那么以后通过继承Item,决定不同的审计项目

请大家指导一下。


------解决方案--------------------
你的方法不错
------解决方案--------------------
你的方法不错,AuditInterface 只定义接口,以后增加audit参数继承Item就行,同时将具体的审计交给Item自己去做,增加Item不会修改原有代码,这个AuditInterface通过Item指针去调用具体的audit,保证接口对具体Item类型不知情。