接口隔离原则:
1、使用多个专用接口比一个庞大的接口好
2、类之间的依赖建立在最小接口上
实例分析
现要实现一个系统:有查询功能,新建记录功能,修改记录功能。对于不同的用户,使用权限也不同,一般用户只能查询,会员能新建记录,而超级用户能修改记录。下面看看如何实现
class System
{
public:
void find();
void create();
void edit();
};
class user
{
public:
void find(System* s);
};
class VIP : public user
{
public:
void create(System* s);
};
class Super: VIP
{
public:
void edit(System* s);
};
user只有访问权限,但却把整个System暴漏给了他。VIP没有编辑功能,而系统却将create功能暴漏给了他。这就违反了接口隔离原则。下面对他进行重构:
class System_user
{
public:
virtual void find() = 0;
};
class System_vip
{
public:
virtual void create() = 0;
};
class System_super
{
public:
virtual void edit() = 0;
};
class System : public System_vip, public System_user, public System_super
{
public:
void find();
void create();
void edit();
};
class user
{
public:
void find(System_user* s);
};
class VIP : public user
{
public:
void create(System_vip* s);
};
class Super : VIP
{
public:
void edit(System_super* s);
};
现在,针对不同的用户,暴漏不同的接口。