使用Object-C实现23种设计模式之适配器模式

原创 2016年06月01日 11:25:28

首先,大家先看一下适配器模式的定义:把一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

看上面一句话,个人觉得并不是多么的通俗易懂,反正当时我研究适配器模式的时候,读了好多遍都没有懂,话不多说,下面上通俗易懂的实例。

用过苹果电脑的人应该知道,购买苹果电脑时,官方标配中,有一个两个插头的充电线,另外,还有一个三插头的扩展线,那么这个三插头的扩展线具体有什么用处呢?

首先,能够起到充电线的延长作用,这个毋庸置疑,当时导购员就是这么给我介绍的(但是最主要的功能不是这个,导购员欺负我读书少>-<),这个三插头的扩展线的主要功能就是,当你的电脑没电而身边可用的插座只有三插口的插座时,可以用这个扩展线来连接充电器,达到充电的目的,假如没有这么个三插头的扩展线,只能面临着一个有插座,有充电器而因为两者不适配无法充电的窘境,在这里,三插头的扩展线充当的就是适配器的角色。

适配器模式中至少有三个角色:

1.目标接口(协议):即客户所期待的接口,也可以说是可以满足当前需要的接口,在上述例子中,三插口插座所期待的三插头充电器既是目标接口,但三插头充电器并不存在。

2.需要被适配的类:不符合现有条件,但是需要使用的类,在此处,两插头的充电器即为需要被适配的类。

3.适配器:具有将不符合条件的但切实需要的类转换为符合条件的类的功能的类,在此处,即三插头扩展线。

下边看具体代码实现:

两插头充电器类

Two.h(英语水平如此,凑活着吧)

#import <Foundation/Foundation.h>

@interface Two : NSObject//需要适配的类
-(void)chargeUseTwo;
@end

Two.m

#import "Two.h"

@implementation Two
-(void)chargeUseTwo{
    NSLog(@"用两插头充电!");
}
@end

三插头扩展线

Three.h

#import <Foundation/Foundation.h>

@protocol Three <NSObject>
@required
-(void)chargeUseThree;
@end

适配器类:


Adapter.h

#import <Foundation/Foundation.h>
#import "Three.h"
#import "Two.h"
@interface Adapter : NSObject<Three>{
@private Two *_two;
}
@end

Adapter.m

#import "Adapter.h"
@implementation Adapter
-(void)chargeUseThree{
    _two = [[Two alloc]init];
    [_two chargeUseTwo];
}
@end

测试:

main.m


#import <Foundation/Foundation.h>
#import "Adapter.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSObject<Three> *three = [[Adapter alloc]init];
        [three chargeUseThree];
    }
    return 0;
}

程序运行结果:

2016-06-01 10:39:58.822 设计模式之六适配器模式[989:68811]用两插头充电!

Program ended with exit code: 0


测试成功,达到了使用三孔插座,适配器,两插头充电器给手机充电的目的。

以上为我个人对适配器模式的简单理解,如有不到之处,敬请指正。

未完待续。。。


版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Object-C实现23种设计模式之原型模式

今天讲解一下最后一个创建型模式——原型模式,在讲解原型模式之前,先说两个概念,深拷贝和浅拷贝,相信学过C或者C++的人都应该了解什么是深拷贝什么是浅拷贝。 深拷贝:增加一个指针并且指向一个新的内存空间...

使用Object-C实现23种设计模式之单例模式

今天给大家讲解一下第四种创建模式——单例模式,单例模式不同于前几种,前几种更注重逻辑,而单例模式则偏重于内存管理以及实际运用,相对前几种要相对简单。 所谓单例模式,就是一种让某个类只产生单一实例的模式...

使用Object-C实现23种设计模式之工厂方法模式

23种设计模式的OC实现,23种设计模式之工厂方法模式。

使用Object-C实现23种设计模式之抽象工厂模式

23种设计模式的OC实现,23种设计模式之抽象工厂模式。

使用Object-C实现23种设计模式之建造者模式

今天给大家讲解一下创建模式的第三种模式——建造者模式; 总所周知,现在手机的品牌各种各样,各有优劣,但是在手机生产商厂房里的流水线上,手机的大体架构都是相似的,决定其不同的地方,关键在于各个环节当中的...

使用Object-C实现23种设计模式之装饰器模式

谈到装饰器模式,首先先引入一个定义:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。他是通过创建一个包装对象,也就是装饰来包括真实的对象。 这个定义怎么去理解?首先从定义中提...

Object-C 学习笔记(六)---单例设计模式

说到单例,在java学习07-单例设计模式已经说的很清楚,Object-C也是一门面向对象的语言,于是除了写法不同,其他都是大同小异. ---未来会出一套 "设计模式"学习的笔记 原则: (1) ...

Object-c 编程之道 IOS设计模式解析

一,初识 设计模式是为特定场景下的问题而定制的解决方案.特定的场景指问题所在重复出现的场景.问题指特定环境下你想达成的目标.定制的解决方案是指在特定环境下克服问题限制条件而达成目标的一种设计. 设...

Java23种设计模式--Adapter(适配器)

实例场景:我们以前的电脑上键盘的usb接口有的是圆形的,现在假如这个接口坏了,用户想要更换一个,但市场上基本上是方形usb接口,很无赖,配不上号,这时,店主告诉用户不用担心,买一个转换器就行,转换器可...

23种设计模式--适配器模式

  • 2013年01月26日 11:00
  • 26.28MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Object-C实现23种设计模式之适配器模式
举报原因:
原因补充:

(最多只允许输入30个字)