生成器模式 - 让配置代码更优雅

Initialization

在这篇文章中博主开头说的这样情况非常常见并且一直困扰着我,因为像我这种靠纯代码写的人,不单单阅读代码,而且还要精简代码以至优雅,博主的思路恰恰帮助了我,所以我特地记录一下,并且日后来不断优化。

1.使用场景

例如一个自定义控件,它有很多属性,如果使用这个控件,就要对他属性进行设置,常见以下两种用法:
1.第一种方式

TargetClass * targetClass = [[TargetClass alloc] init];
targetClass.propertOne  = @"属性一";
targetClass.propertTwo  = NO;
targetClass.propertThir = 3;

2.第二种方式

TargetClass * targetClass = [[TargetClass alloc] initwithPropertyOne:@"属性一" PropertyTwo:NO PropertyThir:3];

1.1分析两种方式

第一种方式可拓展好写,但无法办法约束,无法初始化这些属性。
第二种方法就可以约束属性,但扩展行差。

加入有新需求,在TargetClass控件上增加UIColor属性:
使用第一种方式,可以直接增加UIColor属性,但是使用的工程师有可能忘记或者完全不知道新增加的是什么属性。
使用第二种方式,就会新建了初始化类方法,但随着属性增加越来越多 ……

博主的解决方法是通过build去检查填写的属性,之后生成对象。

1.2Builder Pattern 的两个目的:

1.可拓展性高
2.约束属性值


2.Builder Pattern

demo地址

博主在他的博客中提出了两个解决方案,个人认为第二种更加适合。通过block把目标

3. Masonry中就是实用这样模式对view进行约束

#import "Masonry.h"

    [topSubview makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.mas_topLayoutGuide);
        make.centerX.equalTo(@0);
        make.width.equalTo(@20);
        make.height.equalTo(@20);
    }];

转载于:https://www.cnblogs.com/R0SS/p/5466002.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值