iOS常用设计模式——适配器Adapter

1.什么是适配器设计模式(Adapter)   (What)

适配器设计模式是一种结构型设计模式, 它的作用是把一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

适配器设计模式有两种实现方式:1.)通过继承来实现两个接口,叫类适配器; 2.)通过引用来避免对象适配器继承被适配对象,叫对象适配器。


图1: 类适配器的UML

在类适配器中,Adapter与Adaptee之间的关系是继承,我们通过继承来实现对Adaptee中+ specificReque()方法的重写。


图2:对象适配器UML图



在对象适配器中, Adapter提供了一个对Adaptee的引用,通过这个引用来调用Adaptee中的+ specificReque()方法。

在iOS中, 常用的Delegate模式就属于对象适配器,以UItableViewDelegate的UML图为例:



图3:UITableViewUML


UITableView(对象适配器中的Client角色)处理选中行事件时,消息会传递给UITableViewDelegate(对象适配器中Target角色),然后调用MyViewController(对象适配器中Adapter角色)里面的- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法来进行处理,在MyViewController的这个方法中,我们会调用其他对象(比如说我们可能会调用详情DetailViewController对象来跳转到详情页面)来处理该消息

 

2. 什么时候使用适配器设计模式(When)

当程序员希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。

 

适配器模式有对象适配器和类适配器两种形式的实现结构,但是类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用,另外,OC中也不支持多重继承。对象适配器采用“对象组合”的方式,更符合松耦合规范。

 

3.如何在项目中使用适配器设计模式(How)

1.) 创建一个命令行程序,一个继承自NSObject的Adaptee类,该类中有一个方法-(void)doSomething,我们假定客户端为main函数,main函数不能直接调用该方法,这是我们需要创建一个Adapter类,并定义一个Target协议,协议中定义一个接口-(void)usePublicInterface;

 

 

2.) 让Adapter继承Target协议,并与Adaptee关联起来,然后实现协议中定义的接口,在协议中调用Adaptee类中的方法。

 

3.)在客户端通过Adapter调用usePublicInterface方法就能实现对Adaptee中-(void)doSomething方法的调用。

 

 

实际上,只要实现过UITableView的朋友,都在有意无意的使用适配器设计模式,具体在前文中已经详细的叙述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值