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

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

iOS设计模式 - 生成器

 

原理图

 

说明

1. 将构建复杂对象的过程拆分成一个一个的模块,通过统一的指导者来指导对象的构建过程称之为生成器模式

2. 生成器模式适合用于构建组合的对象

 

源码

////  CarBuilder.h//  BuilderPattern////  Created by YouXianMing on 15/9/14.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
@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

 

分析

关系伦理图

 

 

转载于:https://www.cnblogs.com/YouXianMing/p/4808120.html

你可能感兴趣的文章
大型网站的架构设计与演进
查看>>
二值化函数
查看>>
‘3 sigma’rule(68–95–99.7 rule)
查看>>
内存、时间复杂度、CPU/GPU以及运行时间
查看>>
DES加密解决算法
查看>>
【并发编程】延时初始化
查看>>
编程珠玑--左旋字符串
查看>>
【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十四:储存模块
查看>>
模板 - 字符串 - Manacher
查看>>
2017.1.2
查看>>
Ice_cream's world I
查看>>
串并行数据结构实验--MAC下SML环境安装1
查看>>
java取整和java四舍五入方法
查看>>
学习linux-基础-操作系统结构
查看>>
卸载Linux内置的AMP软件
查看>>
关于js的几道经典题(作用域、原型链等)自己做的
查看>>
如何判断js是否加载完全
查看>>
【菜鸟学Python】函数的定义及调用
查看>>
宜信微服务任务执行器
查看>>
realsense blog 国外某人
查看>>