iOS设计模式简单说明

设计模式是一些非常抽象的概念,单从字面理解起来比较困难,所以对每个设计模式写了些说明/例子来方便理解。
由于本人才疏学浅,所以有些地方我会结合iOS开发中的一些实例来说明,如有不完善/错误的地方,请各位大佬谅解,也欢迎各位大佬指正。谢谢!

  • 代理模式 Porxy

UITableViewDelegate
我是一个委托人,我可以有一个代理人,帮我完成一些任务,我不需要关心谁是我的代理人,只要他们完成我的任务

  • 单例模式 Singleton

SharedApplication
这个世界上现在只有一个你,不会出现第二个你

  • 观察者模式 Observer

Observer/Notification
你打开(注册)App的通知,就成为了App消息(被观察者)的(观察者),当有新消息时,你就会受到推送(通知),没有打开的就不会受到通知

  • 责任链模式 Chain

一系列待响应者按照顺序进行响应,直到有响应者为止
iOS事件传递机制,SubSubView->Subview->View

  • 门面/外观模式 Faced

组合封装
将零件组装成汽车,将低级方法封装成更高级的方法

  • 迭代器模式 Interator

数据库查询结果中next()
公司组织无偿献血,护士只需要按顺序给每个人抽血就可以,不需要关心公司的组织架构是什么样

  • 原型模式 Prototype

copy方法
你有一份调查报告是通过各种调研得来的,同事有个任务也需要你的报告,你通过复印(copy)给他一份,让他也可以拥有一份

  • 装饰器模式 Decorator

Extension/Catagory 拓展
一个人拿上扫帚可以打扫卫生,拿上拖把可以拖地,同事拿上扫帚和拖把,又可以扫地,又可以拖地

  • 享元模式 Flyweight

UITableView重用机制
把对象放入重用池,需要的时候优先从重用池中取,重用池中没有时,才会新建

  • 解释器模式 Interpreter

对正则表达式、SQL语句等String进行解释

  • 适配器模式 Adapter

对接口适配

  • 状态模式 State

根据不同状态有不同的行为
错误展示页根据不同的错误显示不用的页面

  • 中介者模式 Mediator

解耦,通过中介实现不同类/模块之间的通信
MGJRouter、CTMediator等三方库

  • 桥接模式 Bridge

抽象与实现解耦,可以独立进行变化

  • 策略模式 Strategy

执行方法在运行时进行更改,指定不同策略,执行不同方法

  • 组合模式 Composite

部分-整体树形结构,对部分和整体的调用保持一致

  • 访问者模式 Visitor

父类相同的子类具有同名的父类方法,在运行时根据调用对象不同来执行不同方法


  • 备忘录模式 Memento

状态存档
以便于撤销/重做

  • 命令模式 Command

通过发布命令来调用
将一次操作作为一个请求进行保存,以便于撤销/重做


  • 工厂模式 Factory

不调用new来新建复杂对象,而是通过工厂
一个馒头厂可以生产馒头

  • 抽象工厂模式 Abstract Factory

一个面食厂可以生产馒头,也可以生产面包


  • 模板方法模式 Template

流程确定,可以重写方法

  • 建造者模式 Builder

方法确定,流程自由组合


你可能感兴趣的:(iOS设计模式简单说明)