接口扩展的问题
接口的重要意义在于扩展性
假设设计这样一个审计接口:
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类型不知情。