iOS设计模式 - 生成器
2015-09-14 20:26
351 查看
iOS设计模式 - 生成器
原理图
说明
1. 将构建复杂对象的过程拆分成一个一个的模块,通过统一的指导者来指导对象的构建过程称之为生成器模式
2. 生成器模式适合用于构建组合的对象
源码
https://github.com/YouXianMing/iOS-Design-Patterns
分析
关系伦理图
原理图
说明
1. 将构建复杂对象的过程拆分成一个一个的模块,通过统一的指导者来指导对象的构建过程称之为生成器模式
2. 生成器模式适合用于构建组合的对象
源码
https://github.com/YouXianMing/iOS-Design-Patterns
// // CarBuilder.h // BuilderPattern // // Created by YouXianMing on 15/9/14. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <Foundation/Foundation.h> @interface CarBuilder : NSObject { NSMutableDictionary *_carInfo; } /** * 汽车信息 */ @property (nonatomic, strong, readonly) NSDictionary *car; /** * 建造轮子 */ - (void)buildWheel; /** * 建造引擎 */ - (void)buildEngine; /** * 构造外壳 */ - (void)buildShell; @end
// // CarBuilder.m // BuilderPattern // // Created by YouXianMing on 15/9/14. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "CarBuilder.h" @interface CarBuilder () @end @implementation CarBuilder - (instancetype)init { self = [super init]; if (self) { _carInfo = [[NSMutableDictionary alloc] init]; } return self; } - (void)buildWheel { _carInfo[@"wheel"] = @"normal_wheel"; } - (void)buildEngine { _carInfo[@"engine"] = @"normal_engine"; } - (void)buildShell { _carInfo[@"shell"] = @"normal_shell"; } @synthesize car = _car; - (NSDictionary *)car { return [[NSDictionary alloc] initWithDictionary:_carInfo]; } @end
// // BMWBuilder.h // BuilderPattern // // Created by YouXianMing on 15/9/14. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "CarBuilder.h" @interface BMWBuilder : CarBuilder @end
// // BMWBuilder.m // BuilderPattern // // Created by YouXianMing on 15/9/14. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "BMWBuilder.h" @implementation BMWBuilder - (void)buildWheel { _carInfo[@"wheel"] = @"BMO_wheel"; } - (void)buildEngine { _carInfo[@"engine"] = @"BMO_engine"; } - (void)buildShell { _carInfo[@"shell"] = @"BMO_shell"; } @end
// // ViewController.m // BuilderPattern // // Created by YouXianMing on 15/9/14. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "ViewController.h" #import "CarBuilder.h" #import "BMWBuilder.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; CarBuilder *builder = [[CarBuilder alloc] init]; [builder buildEngine]; [builder buildShell]; [builder buildWheel]; NSLog(@"%@", builder.car); CarBuilder *bmwBuilder = [[BMWBuilder alloc] init]; [bmwBuilder buildEngine]; [bmwBuilder buildShell]; [bmwBuilder buildWheel]; NSLog(@"%@", bmwBuilder.car); } @end
分析
关系伦理图
相关文章推荐
- IOS 学习---通过block自定义button的点击事件
- iOS计算缓存大小、清除缓存
- iOS远程推送(.p12转.pem方法)
- ios开发系列之枚举类型的使用
- iOS 页面显示在键盘之上
- 第三方登录
- iOS触摸事件总结
- IOS开发中的kvo以及kvc的理解
- ios推送
- NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
- ios开发日记- 5 屏幕截图
- IOS从视频中获取截图
- iOS开发:利用SDWebImage实现图片加载与缓存
- iOS cocoapods
- iOS开发:一个瀑布流的设计与实现(已实现缓存池功能,该功能使得瀑布流cell可以循环利用)
- (转)27个提升效率的iOS开源库推荐
- IOS开发模块总结(二)后台运行程序(1) 后台运行程序详解(二)
- iOS 计算年龄
- IOS开发模块总结(二)后台运行程序(1) 后台运行程序详解(一)
- iOS开发的22个奇谲巧技