iOS创建对象的不同姿势详解

2020-01-18 20:44:12王冬梅

追求代码美感的同学可能发现了, UserBuilder 的创建语法很丑陋,多个 [ ] 套嵌使用。为了让代码更好看一些,我们也可以使用 block 来创建:


User* user = [User userWithBlock:^(UserBuilder* builder) {
 builder.userName = @"peak";
 builder.userID = @1000;
 builder.signature = YES;
}];

builder pattern 在 Android 平台使用的比较多,我在 iOS 平台上鲜少有看到使用的场景。builder pattern 的不足之处也比较明显,需要另外定义一个 builder 类,多写一些代码(property 基本都重复写了一遍)。个人觉得,在 property 数量较多,初始化的场景也比较多的时候,在 iOS 上使用 builder pattern 也会是个不错的方案。

designated initializer vs builder pattern,这二者之间的不同其实很好的体现了语言本身的差异性。学习过 java 的同学就能明白,在 java 的世界中,一切都是可以被封装成对象的,使用 java 的时候,经常要定义各式各样的辅助类来完成某个任务,好处是封装度高,类职责划分粒度小,缺点是类太多,有时候会为了封装而封装,某些场景代码反而不够直观。

经读者反馈,原来这篇文章的主题已经被写过了。看过之后发现比我写的更全面,推荐大家阅读,传送门。

总结

以上就是这篇文章的全部内容了,本文简单梳理了下创建对象的不同姿势,希望对大家有些帮助。如果有疑问大家可以留言交流。


注:相关教程知识阅读请移步到IOS开发频道。