设计模式学习--适配器

--来自《设计模式:可复用面向对象软件的基础》

目的

将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

类适配器


 

对象适配器

 


 

Class Shape

{

Public:

Shape();

Virtual void BoundingBox(Point& bottomLeft, Point& topRight)const;

Virtual Manipulator* CreateManipulator() const;

};

 

ClassTextView

{

Public:

TextView();

Void GetOrigin(Coord& x, Coord& y) const;

Void GetExtend(Coord& width, Coord& height) const;

Virtual bool IsEmpty() const;

};

 

ClassTextShape : public Shape, private TextView

{

Public:

TextShape();

 

Virtual void BoundingBox(Point& bottomLeft, Point& topRight)const;

Virtual bool IsEmpty() const;

Virtual Manipulator* CreateManipulator() const;

};

 

//TextView接口进行转换使之匹配Shape

VoidTextShape::BoundingBox(Point& bottomLeft, Point& topRight) const

{

Coord bottom, left, width, height;

 

GetOrigin(bottom, left);

GetExtend(width, height);

 

bottomLeft = Point(bottom, left);

topRight = Point(bottom + height, left + width);

};

 

//对象适配器采用对象组合的方法将具有不同接口的类组合在一起。在该方法中,适配器TextShape维护一个指向TextView的指针

Class TextShape : public Shape

{

Public:

TextShape (TextView*);

Virtual void BoundingBox(Point& bottomLeft, Point& topRight)const;

Virtual bool IsEmpty() const;

Virtual Manipulator* CreateManipulator() const;

Private:

TextView* _text;

};

 

TextShape ::TextShape (TextView*)

{

_text = t;//初始化

};

 

VoidTextShape::BoundingBox(Point& bottomLeft, Point& topRight) const

{

Coord bottom, left, width, height;

 

_text->GetOrigin(bottom, left);

_text->GetExtend(width, height);

 

bottomLeft = Point(bottom, left);

topRight = Point(bottom + height, left + width);

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值