- 学校新闻
-
iOS的适配器有哪些设计模式
如何选择一个合适的iOS适配器,可以促进控件的流畅运转,那么,iOS的适配器有哪些设计模式呢?下面就来简单的叙述下iOS适配器的设计模式方面的问题。
一、iOS适配器的问题
朋友们在开发中有没有遇到过这种情况:开发中写了一个视图控件,虽然这个控件只是一个展示类的,并没有什么交互。但是在项目好几个地方都用到了这个控件了,你在给这个视图控件负值的时候是怎么做的呢?
是不是这么写的呢?
-(void)laodData:(ItemModel*)model ;
这么写没有错,而且感觉很简单。但是有两点不好:
视图根数据模型有耦合,视图类引入了模型。
2.当你在项目里其他的地方用到了这个视图类,而且对应的模型不再是ItemModel了,而是一个新的模型,比如说ContentModel,这个时候你要再写一个初始化方法吗?类似:
-(void)laodData:(ContentModel*)model ;
这样写似乎也没有错,但是如多更多地方用了怎么办?
你有没有想过,我不同的地方用到一个控件,为什么要改写好的视图控件呢?有没有别的方法能让我写的视图控件独立出来,不和数据模型产生耦合呢?这就用到了设计模式中的一个适配器模式了。
二、iOS的适配器的设计模式
将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适用场景:
1、已经存在的类的接口不符合我们的需求;
2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;
3、在不对每一个都进行子类化以匹配它们的接口的情况下,使用一些已经存在的子类。
三、使用适配器模式如何重构代码
下面从一个例子中看下适配器的写法:
项目中有一个视图类,展示一个效果,前面是一个图片,图片的后面是一段文字,这个控件在项目里多处使用,并且对应不同的数据模型:效果如下