美文网首页
02常用设计模式

02常用设计模式

作者: i爱吃土豆的猫 | 来源:发表于2022-04-11 16:03 被阅读0次

一、iOS 中常用的设计模式?

1.MVC/MVVM
2.单例
3.代理
4.通知
5.观察者
6.工厂
7.策略

二、各个设计模式的作用

1.MVC 模式

MVC 根据角色划分类, 涉及到三个角色
Model:模型保存应用程序的数据
View: 视图是模型的可视化表示以及用户交互的控件
Controller:控制器是一个协调所用工作的中介者, 它访问模型中的数据并在视图中展示他们, 同时他们还监听事件和操作数据的变化, 主要是处理逻辑相关的问题
一个好的 MVC 的实现, 都意味着每一个对象都被划分到上面所说的组中, 我们可以很好地用下图来描述控制器实现的视图到模型的交互过程:

MVC 架构

模型会把任何数据的变更通知给控制器, 然后控制器更新视图, 视图对象更新通知用户的操作, 控制器要么根据需要来更新模型, 要么检索任何被请求的数据
你可能会想, 为什么不能仅仅使用控制器, 在一个类中实现视图和模型, 这样貌似更加容易?
所有的这些都归结于代码关注点分离以及复用, 在理想的状态下, 视图应该和模型完全的分离, 如果视图不依赖某个实际的模型,那么视图就可以被复用来表示不同模型的数据

2.单例模式

单例设计模式确保对于一个给定的类只有一个实例存在, 这个实例有一个全局唯一的访问点, 它通常采用懒加载的方式在第一次用到实例的时候再去创建它.
注意:苹果大量使用了此模式。
例如:

[NSUserDefaults standardUserDefaults], 
[UIApplication sharedApplication], 
[UIScreen mainScreen], 
[NSFileManager defaultManager],
通知NSNotificationCenter

所有的这些方法都返回一个单例对象。

3.代理模式

在cocoa框架中的Delegate模式中,委托人往往是框架中的对象(视图中的控件、表视图神马的),代理人往往是视图控制器对象。

在我们这个例子中UITableView是委托人,代理人首先得满足一个条件:就是在.h文件中申明它拥有代理资格

遵循协议, 设置代理, 实现方法
当一个类的某些功能需要被别人实现, 但是既不确定是哪些功能, 又不明确是谁来实现这些功能的时候, 代理可以实现,

4.观察者模式

在软件开发中, 无论是哪种高级语言中, 总会伴随着一些最为常用的设计模式, 与我们打交道最多的就是单例, 观察者和类工厂模式
观察者模式本质上一种发布-订阅模式, 用以消除具有不同行为对象之间的耦合, 通过这一模式, 不同对象可以协调工作, 也可以被复用于其他地方的订阅通知

观察者模式是在定义对象间的一种一对多的依赖关系, 并且当一个对象的状态发生改变的时候, 所有依赖于它的对象都会得到通知并且自动更新
如果 N 个 Observer 来拓展 Subject 的行为, 这些 Observer 具有处理存储在 Subject 中的信息的特定实现,这样就实现了消除不同对象之间的耦合的功能了
什么场景下使用观察者模式呢?
1.当需要将改变通知所有的对象时, 而你又不知道这些对象的具体类型的时候
2.改变发生在同一个对象中, 并需要改变其他对象的相关状态进行更新且不知道有多少个对象
cocoa Touch 框架中所有经常打交道的两种技术 KVO 和通知都实现了观察者的模式

  1. 通知对象实现了一对多的模型, 可以让对象之间进行通讯, 即便这些对象之间并不认识
  2. KVO是 cocoa 提供的一种称为键值观察的机制, 对象可以通过它得到其他对象特定属性的变更通知,而这个 机制是基于NSKeyValueObserving非正式些, 而 cocoa 通过这个协议为所有遵循协议的对象提供一种自动化的属性监听的功能

虽然通知和 KVO 都可以对观察者进行实现, 但是他们之间还是有不同的, 由上面的例子我们看出通知是由一个中心对象为所有观察者提供变更通知, 主要是广义上的关注程序事件, 而 KVO 则是被观察者的对象直接向观察者发送通知, 主要是绑定特定对象属性的值

5.工厂模式

创建对象的时候, 我们一般是 alloc 一个对象
我们可以alloc 创建对象封装到一个方法里边,直接调用这个方法就可以了,这就是简单工厂方法
工厂方法模式就是为每一个要创建的对象所在的类都相应的创建一个工厂
但是工厂方法也有他的限制
1.要创建的类必须拥有同一个父类
2.要创建的类在100个不同的地方所调用的方法必须是一样的

6.策略模式

如何让算法和对象分开来, 使得算法可以独立于使用它的客户而变化?
策略模式, 定义一系列的算法, 把每一个算法封装起来, 本模式使得算法可独立于使用 它的客户而变化, 也成为政策模式, 策略模式把对象和预算规则区分开来, 使其功能强大, 因为这个设计模式本身的核心思想就是面向对象编程的多行性的思想.

当以下情况, 使用策略模式
1)• 许多相关的类仅仅是行为有异。 “策略”提供了一种用多个行为中的一个行为来配置一个类的方法。即一个系统需要动态地在几种算法中选择一种。

2)• 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间 /时间权衡的算法。当这些变体实现为一个算法的类层次时 ,可以使用策略模式。

3)• 算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。

4)• 一个类定义了多种行为 , 并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。

相关文章

  • 02常用设计模式

    一、iOS 中常用的设计模式? 1.MVC/MVVM2.单例3.代理4.通知5.观察者6.工厂7.策略 二、各个设...

  • Java 常用设计模式简例

    简述Java常用设计模式 简述Java常用设计模式及设计原则 strate---------策略模式针对接口编程,...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • java单例模式与线程安全

    设计模式在软件架构设计中被经常使用,掌握常用的设计模式对于设计软件系统非常重要。单例模式作为设计模式中最简单和常用...

  • 知识复盘

    1:熟练使用Android常用性能调优 2:Java常用设计模式 3:Android常用设计模式(架构) 4:An...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 常用设计模式介绍

    常用设计模式介绍

  • 工厂模式

    安卓常用的设计模式 工厂模式(Factory Pattern)是 Android中最常用的设计模式之一。这种类型的...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

网友评论

      本文标题:02常用设计模式

      本文链接:https://www.haomeiwen.com/subject/scyahxtx.html