构造器模式(builder)
意图:
将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示
适用范围:
创建复杂对象的算法独立于对象的组成部分和装配方式
实践-富文本生成器
富文本是一个属性非常多的对象,系统api构造过程繁杂,用block做个简单封装,可以像下面这样链式调用
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
AttributeStringBuilder *builder = AttributeStringBuilder.new;
builder.text(@"我是").color(UIColor.greenColor).font([UIFont systemFontOfSize:20]).commit();
builder.text(@"构造器模式").color(UIColor.redColor).font([UIFont systemFontOfSize:30]).commit();
builder.text(@"的演示").color(UIColor.blueColor).font([UIFont systemFontOfSize:20]).commit();
UILabel *label = [[UILabel alloc] init];
label.attributedText = builder.result;
[self.view addSubview:label];
[label sizeToFit];
label.center = CGPointMake([UIScreen mainScreen].bounds.size.width * 0.5, 100);
}
展示如下:
像masonry也是用的构造器模式,前提是对象够复杂,否则就有些得不偿失了,本文demo地址