生成器模式 - 让配置代码更优雅
Initialization
在這篇文章中博主開頭說的這樣情況非常常見并且一直困擾著我,因?yàn)橄裎疫@種靠純代碼寫的人,不單單閱讀代碼,而且還要精簡(jiǎn)代碼以至優(yōu)雅,博主的思路恰恰幫助了我,所以我特地記錄一下,并且日后來不斷優(yōu)化。
1.使用場(chǎng)景
例如一個(gè)自定義控件,它有很多屬性,如果使用這個(gè)控件,就要對(duì)他屬性進(jìn)行設(shè)置,常見以下兩種用法:
1.第一種方式
2.第二種方式
TargetClass * targetClass = [[TargetClass alloc] initwithPropertyOne:@"屬性一" PropertyTwo:NO PropertyThir:3];1.1分析兩種方式
第一種方式可拓展好寫,但無法辦法約束,無法初始化這些屬性。
第二種方法就可以約束屬性,但擴(kuò)展行差。
加入有新需求,在TargetClass控件上增加UIColor屬性:
使用第一種方式,可以直接增加UIColor屬性,但是使用的工程師有可能忘記或者完全不知道新增加的是什么屬性。
使用第二種方式,就會(huì)新建了初始化類方法,但隨著屬性增加越來越多 ……
博主的解決方法是通過build去檢查填寫的屬性,之后生成對(duì)象。
1.2Builder Pattern 的兩個(gè)目的:
1.可拓展性高
2.約束屬性值
2.Builder Pattern
demo地址
博主在他的博客中提出了兩個(gè)解決方案,個(gè)人認(rèn)為第二種更加適合。通過block把目標(biāo)
3. Masonry中就是實(shí)用這樣模式對(duì)view進(jìn)行約束
#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);}];轉(zhuǎn)載于:https://www.cnblogs.com/R0SS/p/5466002.html
總結(jié)
以上是生活随笔為你收集整理的生成器模式 - 让配置代码更优雅的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7:分支管理
- 下一篇: 基于案例贯通 Spark Streami