Adapter的主要思想:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要意思是:我们需要一种方法,为一个内容合适但接口不匹配的对象创建一个新的接口。
分析如下场景:
有一个Shape类(抽象类),拥有name属性,和display方法(显式名字)。假设我们已经实现了椭圆子类,接着要实现圆子类,此时发现,已经有同事实现了一个“圆类:XCircle”,这个类已经实现了我们需要的功能。但是我们并不能直接使用这个类,因为XCircle里的显式名字的方法是xdisplay,为了保持Shape的多态性,我们不能使用这个类,但是我们可以使用这个类,这时就可以使用Adapter模式了:
实现一:Adapter类模式,通过私有继承实现组合
class Circle :public Shape,private XCircle
{
public:
void display()
{
xdisplay();
}
} ;
实现二:Adapter对象模式,直接使用组合
class Circle :public Shape
{
public:
Circle(XCircle xcircle){this->circle = xcircle;}
void display()
{
circle->xdisplay();
}
private:
XCircle * xcircle;
} ;
粗看上去,适配器模式与代理模式非常相象,他们都可视为一个对象提供一个前置,但是适配器模式的用意是改变所要考虑对象的接口,而代理模式并不能改变所代理的对象的接口,在这一点上两个模式有明显的区别。
343

被折叠的 条评论
为什么被折叠?



