博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式 - 适配器
阅读量:6297 次
发布时间:2019-06-22

本文共 4793 字,大约阅读时间需要 15 分钟。

设计模式 - 适配器

适配器也叫接口适配,其目的是为了减少不同类型数据之间的耦合度而进行的数据转换,有利于减少冗余代码。

源码如下:

ModelCell.h 与 ModelCell.m

////  ModelCell.h//  Adapter////  Created by YouXianMing on 15/1/6.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
@interface ModelCell : UITableViewCell@property (nonatomic, strong) UILabel *name;@property (nonatomic, strong) UILabel *age;@end
////  ModelCell.m//  Adapter////  Created by YouXianMing on 15/1/6.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "ModelCell.h"@implementation ModelCell- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {                self.name           = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 18)];        self.name.font      = [UIFont boldSystemFontOfSize:16.f];        self.name.textColor = [UIColor redColor];        [self addSubview:self.name];                self.age           = [[UILabel alloc] initWithFrame:CGRectMake(10, 18 + 10, 200, 14)];        self.age.font      = [UIFont italicSystemFontOfSize:12.f];        self.age.textColor = [UIColor blackColor];        [self addSubview:self.age];            }        return self;}@end
AdapterModel.h 与 
AdapterModel.m
////  AdapterModel.h//  Adapter////  Created by YouXianMing on 15/1/6.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
@interface AdapterModel : NSObject@property (nonatomic, strong) NSString *name;@property (nonatomic, strong) NSString *age;/** * 根据字典来初始化 * * @param dic model字典 * * @return 实例对象 */+ (instancetype)adapterWithDictionary:(NSDictionary *)dic;/** * 根据对象来初始化 * * @param dic model字典 * * @return 实例对象 */+ (instancetype)adapterWithObject:(id)object;@end
////  AdapterModel.m//  Adapter////  Created by YouXianMing on 15/1/6.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "AdapterModel.h"@implementation AdapterModel+ (instancetype)adapterWithDictionary:(NSDictionary *)dic {        AdapterModel *model = nil;        if (dic != nil && [dic isKindOfClass:[NSDictionary class]]) {        model      = [AdapterModel new];        model.name = dic[@"name"];        model.age  = dic[@"age"];    }        return model;}+ (instancetype)adapterWithObject:(id)object {    // 预留        return [AdapterModel new];}@end
控制器源码:
////  ViewController.m//  Adapter////  Created by YouXianMing on 15/1/6.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "ModelCell.h"#import "AdapterModel.h"static NSString *ModelCellFlag = @"ModelCell";@interface ViewController ()
@property (nonatomic, strong) UITableView *tableView;@property (nonatomic, strong) NSMutableArray *dataArray;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // 初始化数据源 [self createDataSource]; // 初始化tableView [self createTableView];}#pragma mark - 数据源相关- (void)createDataSource { self.dataArray = [NSMutableArray array]; [self.dataArray addObject:[AdapterModel adapterWithDictionary:@{@"name": @"FireEmblem", @"age" : @"40"}]]; [self.dataArray addObject:[AdapterModel adapterWithDictionary:@{@"name": @"YouXianMing", @"age" : @"27"}]]; [self.dataArray addObject:[AdapterModel adapterWithDictionary:@{@"name": @"QiuLiang", @"age" : @"28"}]]; [self.dataArray addObject:[AdapterModel adapterWithDictionary:@{@"name": @"PingKang", @"age" : @"25"}]];}#pragma mark - tableView相关- (void)createTableView { self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; self.tableView.delegate = self; self.tableView.dataSource = self; [self.tableView registerClass:[ModelCell class] forCellReuseIdentifier:ModelCellFlag]; [self.view addSubview:self.tableView];}#pragma mark row数量- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataArray.count;}#pragma mark cell初始化- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ModelCell *cell = [tableView dequeueReusableCellWithIdentifier:ModelCellFlag]; AdapterModel *model = self.dataArray[indexPath.row]; cell.name.text = model.name; cell.age.text = model.age; return cell;}#pragma mark cell高度- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 50;}@end

以下是核心代码处:

转载地址:http://rdqta.baihongyu.com/

你可能感兴趣的文章
hdu 4632 子字符串统计的区间dp
查看>>
Oracle PL/SQL编程学习笔记:游标
查看>>
(转载)hadoop(13) 添加或删除datanode节点
查看>>
Python 匿名函数
查看>>
scrapy多个page爬取, post请求, 通过爬到的URL继续发请求爬页面
查看>>
bzoj 1189 紧急疏散 网络流
查看>>
2015年获得大数据顶尖职位必备的9项技能
查看>>
JTA和JTS
查看>>
OC实例变量和属性-@synthesize与@property
查看>>
MP3 编码解码 附完整c代码
查看>>
MVC匿名类传值学习
查看>>
POJ 3057 Evacuation(二分匹配)
查看>>
POJ - 2549 Sumsets
查看>>
《系统分析与设计方法》 计算投资回收分析
查看>>
客户端AJAX验证表单
查看>>
HTML框架,列表,表格
查看>>
UIButton设置 textAlignment 属性的方法
查看>>
4、NIO--通道的原理和获取
查看>>
解决js跨域调用WebApi的问题
查看>>
spring mvc 与Struts的认识
查看>>