设计模式与代码重构——iOS篇

本文探讨了iOS开发中的设计模式,包括编程设计模式、苹果App开发常用设计模式,以及如何进行代码重构。文章强调了设计模式在提高编程效率和运行效率中的重要性,并通过实例解释了如何在实践中运用和优化代码。同时,文中提到了一些常见的设计模式,如观察者模式、装饰者模式、单例模式等,并讨论了如何在iOS项目中实施这些模式。
摘要由CSDN通过智能技术生成

        有一阵子没写技术分享文了,最近每个月写一篇个人空间日记。主要是觉得自己技术比较一般写不出有质量的东西,误人子弟。互联网信息膨胀,让我们获取信息更加便捷,然而获取个人所需的正确信息,却需要每个人具备更强的搜索能力。搜索能力作为代码,就需要更优的算法。算法就像是程序的CPU,决定着程序的运行效率。
        与其说电脑改变了世界,不如说是电脑改变了人类改变世界的效率。电脑其实是根据人脑设计的,而程序思想和人的思想相通,所以一个程序员在学会一门语言后,学习第二门语言会来的容易很多,因为编程思想是相通的。我认为,这和学外语有相通之处。
        和一个爱武侠的朋友谈论程序,觉得写程序也像是练武,代码编辑器是武器,编程语言是武功秘籍,算法是功力,设计模式是招式。
        做iOS开发,无非是XCode一种代码编辑器,由于apple公司的封闭,XCode目前除了Mac系统下没有其他系统下的版本。XCode也随着iOS系统升级不断改良,GDI(Graphics Device Interface)不断完善,由起初的一个页面对应一个控制器的XIB编辑器,演变为模块化试图编辑的storyBoard,加之设备屏幕的丰富性,增加了图形界面可视化约束,以及数据模型视图CoreData的可视化编辑。功能的强大需要程序员更加深入的学习及掌握。然而人性的本能惰性使得很多老程序员并不喜欢使用新兴的工具,而选择纯代码实现,所以也得不到GDI所提供的视图编辑便利。是否使用GDI不关系一个程序员的编程思想,GDI在多数是客户端视图编码用到,它本身是由代码实现的,做项目可以没有GDI,但离不开编码,在多人协同开发的情况下越来越多的出现了多样化的混编。而CoreData的可视化数据模型也存在缺陷,其定义的模型属性,头字母必须是小写的。
        程序员何其多,做算法的没有几个,多数程序员是做界面的,做业务的。业务的复杂性,或设备硬件的限制才需要由算法提高运行效率。算法意味着接触更底层的东西,指针、位、汇编、机器语言。至于黑客种种,是一群对网络安全极其了解且对算法了如指掌的人把算法运用于攻击网络安全防线的神,他们不是人,我也见不到他们。对于目前的我,还是扎扎实实学精设计模式,运用于编程,让编程效率更高,运行效率更优。而我始终相信:会设计得码农,是工程师,不会设计得工程师是码农。精通算法的工程师,是架构师,不懂算法的工程师,只是代码的搬运工。

下面我针对编程设计模式和苹果App开发常用设计模式对设计模式进行简单介绍,也算是自己设计模式的读书笔记。

一、编程设计模式

        第一次我看《Head First,Design patterns》这本书的时候并不知道Head Frist的意思,因为知道自己看的是设计模式的书,联想到面向对象编程,以为它就是“头文件先写”的意思,后来才知道Head First是一个系列的丛书,所以应该与设计模式没有关系。于是百度一下,原来翻译为“深入浅出”。然而,“头文件先写”不但让我认识到自己需要加强英语学习,而且成为我编写代码的第一要务,于是后来慢慢有了一点面向对象的认识。

代码设计遵循以下原则:

  1.  找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
  2.   针对接口编程,而不是针对实现编程。
  3.  多用组合,少用继承。
  4.  别调用我们,我们会调用你。
  5.  一个类应该只有一个引起变化的原因。

下面就介绍一下常用设计模式和其对应的生活中的模式应用:

  1. 观察者模式(Subject、Observer):气象台、报纸杂志( 天气=>各种布告板;报纸杂志=>订阅人、读者)
  2.  装饰者模式:星巴克咖啡
  3.  工厂模式:披萨工厂、红团印、盖章
  4.  抽象工厂模式:披萨店
  5.  单例模式:巧克力工厂锅炉
  6.  命令模式:遥控器开关、订单
  7.  适配器模式:插座转接头
  8.  模板方法模式:泡茶、咖啡
  9.  迭代器和组合模式:餐厅并购煎饼屋,菜单的遍历
  10.  状态模式:糖果机、饮料机
  11.  代理模式:代表辅助完成某功能
  12.  复合模式:结合两个或多个模式,解决一般或重复发生的问题。

            由于本篇主要讲述iOS设计模式,这里不对编程模式展开叙述,后期会对编程模式写一篇学习笔记。这里就简要介绍一下。代码设计软件StarUML,是Mac下一款比较常用的设计软件。

二、苹果App开发常用设计模式及架构探索

  1. 设计模式的起源:MVC设计模式

1.1在模型对象中封装数据和基本行为
1.2使用视图对象向用户展示信息
1.3用控制器对象联系其模型和视图

  1. 针对接口编程,而不是针对实现编程


2.1.类和类型的差别:一个对象可以具有多个类型,而不同的类的对象可以有相同的类型
2.2.类型的所有对象,包括其子类的对象,都可以针对接口(协议、抽象类的虚方法)请求作出应答。
2.3.协议@protocol与抽象基类

            2.3.1协议并不定义任何实现,而只声明方法,以确定符合协议的类的行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

群野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值