在Swift中使用构建者模式
发表于|更新于
|浏览量:
在Swift中使用构建者模式
和编程中其他的抽象和模式一样,构建者模式的目的是减少以保持可变状态——从而使对象更简单、且更容易预测。对象变得“少状态”,就会容易测试和调试——因为他们逻辑只存在单纯的输入输出。
尽管构建者模式在java中十分常见,然而在苹果平台上却很少遇到(至少和构建对象不同)。这周,我们来看一下,构建者
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2025-08-21
关于我用CodeBuddy开发了几个APP的体验
背景一直想写,但是太忙了,用CodeBuddy新开发iOSAPP,又同时想做鸿蒙APP,好家伙,是真的忙不过来。 先说体验:我觉得CodeBuddy是最厉害的,(在座的谁赞成,谁反对),🤪,就这么说吧,我用过Trae,Cursor, Windsurf,还申请了Kiro,综合下来,我觉得目前CodeBuddy对于我来说是最厉害的。 我最早用的是Trae,一开始国际版我就用了,使用期间开发了一个app吧,用着用着就智障了,就是本来好好沟通着,突然就感觉对方变傻了,还把项目修改坏了,辛辛苦苦干了好几天,一下子回到解放前了……如果是用量达标,我倒是宁可他提醒我用量达标,也不希望换成一个傻子,就像你跟一个人聊得正投缘,觉得是知己,突然间她流着口水变成了傻子,这换谁也接受不了啊🤣 噢噢,忘了说背景,我是用这些工具做app开发,从头开始开发。所以上面的体验仅供参考。 优点先说优点: 开发快速,只需要说一句话,就能快速搭建一个APP的框架,实现基本功能。 不依赖语言,通过类似的工具,模糊了开发语言的鸿沟,不必说必须学会了某个开发语言,才能开发某种APP或网站,初步能实现”任何人只要有想...
2021-07-27
Flutter布局基础——Card
Flutter布局基础——CardCard,卡片式布局,带有一点圆角和阴影。通常用于关联信息的展示,比如:相册信息、经纬度、联系人信息等等。 Card的使用来看一下,如何做一个,常见的列表元素的控件,左侧是个Icon,上面是title,然后是desc,最下面是按钮,常见于订单列表。 要实现的效果如下: 然后看如何实现: ListTile这里需要介绍一下ListTile,Flutter提供的固定高度的,左侧或右侧带有Icon以及文案的控件。 可实现效果如下: 代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home...
2016-06-01
半透明效果的实现
类似下图这样一个半透明效果的实现: 起因:我今天在推酷上面闲逛的时候,看到了这样一篇文章用 Swift 编写面向协议的视图,里面介绍的是一个颤动的效果,分别采用直接实现、category实现以及protocol extension实现,来表现swift面向协议的强大,推荐大家仔细看看。 在文章的末尾,附有一个链接,是透明视图控制器及背景遮罩,我点开看了一下,是一个采用protocol extension实现的类似图一的半透明的实现;只不过是swift的。 然后我仔细回想了一下,类似这种效果的需求在开发中不少,但是每次我实现都是自定义一个view然后用动画效果实现,现在想想这样不但繁琐,而且很low,有木有。 然后想想上面的那个实现,我把它翻译成OC的怎么样,能不能使用,OC里面是没有protocol extension的,那我就直接用category实现,至少比每次实现都重写方便。 then,here is the result. DimBackground-OC里面很简单,使用的时候只需要导入这两个文件,然后使用即可。 但是需要注意的是,要present出来的那个界面,这...
2022-04-21
Algorithem_Populating Next Right Pointers in Each Node
Algorithem_Populating Next Right Pointers in Each NodeYou are given a perfect binary tree where all leaves are on the same level, and every parent has two children. The binary tree has the following definition: 123456struct Node { int val; Node *left; Node *right; Node *next;} Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL. Initially, all next pointers are set to NULL. Example 1: 12Input: root...
2022-04-14
Algorithem_ReverseArray
Algorithem_ReverseArrayGiven an array, rotate the array to the right by k steps, where k is non-negative. Example 1: 12345678Input: nums = [1,2,3,4,5,6,7], k = 3Output: [5,6,7,1,2,3,4]Explanation:rotate 1 steps to the right: [7,1,2,3,4,5,6]rotate 2 steps to the right: [6,7,1,2,3,4,5]rotate 3 steps to the right: [5,6,7,1,2,3,4] Example 2: 1234567Input: nums = [-1,-100,3,99], k = 2Output: [3,99,-1,-100]Explanation: rotate 1 steps to the right: [99,-1,-100,3]rotate 2 steps to the right: [3,9...
2023-02-22
CABasicAnimation进入二级界面再回来不生效
背景发现之前同事写的某个界面有个动效, 起初进入的时候是生效的, 进入二级界面再返回动效就没了, 动画用的是CABasicAnimation, 添加在 layer 上面. 解决看代码没有问题, 毕竟第一次就生效了, 以为是在页面消失时做了什么操作, 查了之后发现, 页面消失时并没有操作. 再回过来看代码, 代码动画部分是在didMoveToWindow中实现的, 大致如下: didMoveToWindow方法在页面消失和出现的时候都会调用, 难道是添加多次导致不生效了, 改成只添加一次之后发现效果一样, 进入二级页面再返回就不生效了. 1234567891011override func didMoveToWindow() { layer.addSublayer(gradientLayer) let basicAnim = CABasicAnimation(keyPath: "animateLocation") basicAnim.fromValue = [xxx] basicAnim.toValue = [xx...
公告
This is my Blog