当前位置: 首页 > 面试题库 >

除了MVC,iOS上还使用了哪些设计模式?

颜安宁
2023-03-14
问题内容

除了MVC,我需要了解iPhone开发中使用的设计模式。

请以任何示例说明或示例代码作为答复。

谢谢。


问题答案:

抽象工厂

抽象工厂模式提供了一个接口,用于创建相关或相关对象的族,而无需指定其具体类。客户与从工厂获得的具体对象的任何细节都没有关联。

适配器

适配器设计模式将类的接口转换为客户端期望的另一个接口。适配器使类可以协同工作,否则由于接口不兼容而无法实现。它将客户端与目标对象的类分离。

责任链

责任链设计模式通过为多个对象提供处理请求的机会,将请求的发送者与接收者分离。模式将接收的对象链接在一起,并沿着链传递请求,直到对象处理它为止。链中的每个对象要么处理请求,要么将请求传递给链中的下一个对象。

命令

Command设计模式将请求封装为对象,从而使您可以为具有不同请求,队列或日志请求的客户端参数化,并支持可撤消的操作。请求对象将特定接收者上的一个或多个动作绑定在一起。命令模式将发出请求的对象与接收并执行该请求的对象分开。

综合

Composite设计模式将相关对象组合成树形结构,以表示部分整体层次结构。该模式使客户可以统一对待单个对象和对象组成。Composite模式是Model-
View-Controller聚合模式的一部分。

装饰器

装饰器设计模式动态地将附加职责附加到对象上。装饰器为子类提供了灵活的替代方案,以扩展功能。与子类一样,修饰器模式的改编允许您合并新行为而无需修改现有代码。装饰器包装其行为将扩展的类的对象。它们实现与包装对象相同的接口,并在将任务委派给包装对象之前或之后添加自己的行为。装饰器模式表达了设计原则,即类应该对扩展开放,而对修改不开放。

正面

Facade设计模式为子系统中的一组接口提供了统一的接口。该模式定义了一个更高级别的接口,该接口通过降低复杂性并隐藏子系统之间的通信和依赖性来使子系统更易于使用。

迭代器

Iterator设计模式提供了一种在不暴露其基础表示的情况下顺序访问聚合对象(即集合)的元素的方法。迭代器模式将访问和遍历集合元素的责任从集合本身转移到迭代器对象。迭代器定义用于访问集合元素的接口,并跟踪当前元素。不同的迭代器可以执行不同的遍历策略。

调解员

介体设计模式定义了一个对象,该对象封装了一组对象之间的交互方式。介体通过防止对象之间显式地相互引用来促进松散耦合,并且它使您可以独立地更改其交互。这些对象因此可以保持更高的可重用性。这种模式下的“中介对象”集中了系统中对象之间的复杂通信和控制逻辑,这些对象在状态发生变化时告诉中介对象,并依次响应中介对象的请求。

纪念

Memento模式捕获并外部化了对象的内部状态,而不会违反封装方式,以便以后可以将对象恢复到此状态。备忘录模式将关键对象的重要状态保持在该对象之外,以保持凝聚力。

观察者

观察者设计模式定义了对象之间的一对多依赖关系,因此当一个对象改变状态时,其所有依赖关系都会被通知并自动更新。观察者模式本质上是一个发布和订阅模型,其中主题及其观察者是松散耦合的。可以在观察对象和被观察对象之间进行通信,而无需彼此了解太多。

代理

代理设计模式为另一个对象提供了一个代理或占位符,以控制对另一个对象的访问。您可以使用此模式创建代表或代理对象,该对象控制对另一个对象的访问,该对象可能是远程的,创建成本很高或需要保护。这种模式在结构上与Decorator模式类似,但用途不同。装饰器将行为添加到对象,而代理服务器则控制对对象的访问。

接待员

接待员设计模式解决了将一个应用程序的一个执行上下文中发生的事件重定向到另一个执行上下文以进行处理的一般问题。这是一种混合模式。尽管它没有出现在“四人帮”一书中,但它结合了该书中描述的Command,Memo和Proxy设计模式的元素。它也是蹦床模式的变体(在本书中也没有出现)。在这种模式下,蹦床对象最初会收到一个事件,之所以这么称呼,是因为它会立即将该事件反弹或重定向到目标对象进行处理。

辛格尔顿

Singleton设计模式可确保一个类仅具有一个实例,并提供对其的全局访问点。该类跟踪其唯一的实例,并确保不能创建其他实例。Singleton类适用于单个对象提供对全局资源的访问权的情况。

模板方法

模板方法设计模式定义了操作中算法的框架,将某些步骤推迟到子类。模板方法模式允许子类在不更改算法结构的情况下重新定义算法的某些步骤。

资料来源:
可可设计模式。



 类似资料:
  • 能接触到的常见问法: 项目中有用到什么设计模式?(前端更多点) 重构使用了什么设计模式?(如果你项目强调了重构一般会问) 说说对 XX 模式的理解?(个人接触过的是单例和工厂,这两个比较多) 有接触到哪些?实际用到过哪些?(通用) 除了这些,还有一些不常见的进阶和基础问法,这些直接在下面整理 -- 设计模式这个主题还挺玄乎的,个人直观体验是,自己日常实习那段时间问得挺频繁的,可能是因为没啥好问的。

  • 1、简单工厂模式 简单工厂模式的本质就是一个工厂类根据传入的参数,动态的决定实例化哪个类。 Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象。 2、工厂方法模式 应用程序将对象的创建及初始化职责交给工厂对象,工厂Bean。 定义工厂方法,然后通过config.xml配置文件,将其纳入Spring容器来管理,需要通过factory-method指

  • 之前做响应网站(pc,手机端自适应)一般都用bootstrap,之前用的是v3版本,但现在已经是v5了,现在用bootstrap的还多吗?一般用哪个版本?或者现在用的比较多的样式架构有哪些???

  • 本文向大家介绍请说说你了解的设计模式有哪些?相关面试题,主要包含被问及请说说你了解的设计模式有哪些?时的应答技巧和注意事项,需要的朋友参考一下 1、单例模式 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。保证一个类仅有一个实例,并提供一个该实例的全局访问点。 (1)经典模式--单线程 对于线程来说不安全;但在单线程中已满足要求。

  • 本文向大家介绍熟悉哪些设计模式?相关面试题,主要包含被问及熟悉哪些设计模式?时的应答技巧和注意事项,需要的朋友参考一下 按照自己的实际情况回答,当然是越多越好。比如我自己也就熟悉个单例模式。

  • 问题内容: 在AngularJS负责人Igor Minar 的这篇文章中: MVC vs MVVM vs MVP 。许多开发人员可能花费数小时来辩论和争论,这是一个有争议的话题。 几年来,AngularJS更加接近于MVC(或其客户端变体之一),但是随着时间的流逝,由于许多重构和api的改进,现在它更加接近 MVVM – $ scope 对象可以被认为是 ViewModel 。由我们称为 Cont