“接口隔离”模式其本质就是采用添加一层【间接】的稳定的接口,来隔离本来相互紧密关联的接口。其实间接的方法在之前很多设计模式都可以体现到,如依赖倒置原则,就是通过添加一层间接的接口,将new方法隔离出去,实现多态。这里统一将接口隔离只是他十分突出。
1、门面模式;主要用于内部与外部之间的隔离。就是将一组关系很强的紧耦合的一组接口进行封装,并都交给一个接口,这就是门面,并且外部要访问这内部的一些接口只能通过访问这个门面接口来进行访问,
唯一要注意的是这一组接口必须是很很强关系的并且紧耦合的
代理者模式
增加一个透明的间接层,代理一些不为外界所知的的层次,如性能、安全等。
适配器;就如现实生活中的适配器一样、将一种接口转换成另外一种接口来使用,中间的层次就将适配器。
其实现的核心就是;有一个适配器类实现继承新接口、并组合旧接口的指针、从而在实现继承来的新接口的方法时里面组合而来的旧接口的那些方法进行组合,从而实现新的接口。
在具体的时候时,这三步就可以完成新接口调用原来旧接口的类。
oldInter *poldInter = new MyClass();//旧接口
newInter *pnewInter = new Adaper(poldInter);//旧接口组合成新接口
pnewInter->newPor();
#include "Adaper.h"
class newInter
{
public:
newInter();
~newInter();
virtual void newPor();
private:
};
class oldInter
{
public:
oldInter();
~oldInter();
virtual void oldPor1();
virtual void oldPor2();
private:
};
class MyClass : oldInter
{
public:
MyClass();
~MyClass();
virtual void oldPor1(){};
virtual void oldPor2(){};
private:
};
class Adaper : newInter//继承新接口
{
oldInter * oldInter;//组合
public:
Adaper(oldInter *oldInter){
this->oldInter = oldInter;
};
~Adaper();
virtual void newPor()//用旧接口的那一套实现新接口
{
oldInter->oldPor1();
oldInter->oldPor2();
}
};
int main()
{
oldInter *poldInter = new MyClass();//旧接口
newInter *pnewInter = new Adaper(poldInter);//旧接口组合成新接口
pnewInter->newPor();
return 0;
}
中介者模式;其实类似于门面模式,只是门面模式作用与外部和内部之间的接口、而中介者模式是作用与内部、当内部的内接口都编的十分复杂的时候就可以创建一个中介来完成管理,但是中介者需要定义很多协议规范,来完成对应的管理。