zoukankan      html  css  js  c++  java
  • (译)Getting Started——1.3.2 Using Design Patterns(使用设计模式)

        设计模式解决了一个常见的软件工程学问题。模式不是编码,它是抽象的设计。它用于帮助开发者定义数据模型的结构和应用的交互。如果你采用了某种设计模式,你需要把它的一般形式适配到你特殊的需求上。不论你的应用是哪种形式,了解框架中使用的基本设置模式都是很有必要的。理解设置模式有助于你更有效的使用框架,还能帮助你写出重用性高、扩展性好、更容易变更的应用。

    MVC

        模型-视图-控制器(MVC)是IOS应用开发的核心设计模式。MVC把应用中的对象看为三种规则中任意一个:模型,视图,控制器。在这种模式下,模型跟踪应用的数据,视图显示用户的界面和构成应用的内容,控制器用于管理视图。通过响应用户的动作,通过使用数据模型中的数据来给视图填充内容,控制器被当成模型和视图之间的通道。

        按照前面课程构建的ToDoList应用也遵循了MVC的设计模式。你在storyboard中创建的界面充当了视图层。AddToDoItemViewController和ToDoListTableViewControl这两个文件是用于管理视图的控制器。在后面的教程中,你将把一个数据模型合并到项目中,与视图和控制器一起工作。在开始进行应用设计之前,一定要以MVC的设计思想作为主导思想。

    Target-Action

        Target-Action是概念级别的简单设计模式,具体化后就是:当某个指定的事件发生时,某个对象把消息发送给另外一个对象。动作消息(action message)其实就是定义在源码中的选择器,目标(target)——接收消息的对象——也就是能够执行动作的对象,一般来说由视图控制器来充当。发送动作消息的对象一般被称为控件(control),例如button,slider,switch等,这些控件(control)都可以触发事件,用于响应用户的交互动作,例如按下,拖动等。

        假设有这样一个案例:当用户按下应用中的Restore Defaults按钮时,你想存储默认的设置。首先,你得实现一个动作,用于执行存储默认设置的逻辑。然后,你需要注册按钮的Touch Up Inside事件来把存储默认设置的动作发送给实现了该方法的视图控制器。

        在ToDoList应用中,我们已经使用了target-action模式。当用户在AddToDoItemViewController中按下保存按钮时,就触发了unwindToList动作。在这种情况下,保存按钮是发送消息的对象,目标对象是ToDoListTableViewController,动作消息是:unwindToList,接收消息的、被触发动作的事件是:用户按下保存按钮。target-action在应用各部分之间定义交互和发送消息,是一种功能强大的机制。

    代理(Delegation)

        代理是一种简单但是功能强大的语法,在应用中,它代表或配合另一对象的行为。代理对象中,持有另一对象的引用,并在适当的时期,代理对象给代理发送消息。消息通知事件的代理,该事件是代理对象即将处理或已经处理的事件。代理也可以响应自身界面(或状态)更新发出的消息,在某些情况下,它将返回一个值,该值会影响即将发生事件的处理。

        代理模式普遍存在于现有的框架中,在应用的两个自定义对象之间,你也可以实现代理。使用代理的常用设计模式为:子视图控制器可以与父视图控制器就某个值(尤其是用户输入的值)进行通信。

        到目前为止,你还用不到代理,但是在后面的教程中,当你给ToDoListTableViewController类添加额外的行为时,你会用到它。

        上述的这些代理设计模式只是你在IOS开发中,会遇到的一小部分,当然,代理模式还有更多的应用。随着Objective-C学习的深入,你会发现越来越多可以在应用中使用的代理模式。

  • 相关阅读:
    深入理解net core中的依赖注入、Singleton、Scoped、Transient(一)
    ActionDescriptorProviderContext
    IActionDescriptorProvider
    JWT签名算法中HS256和RS256有什么区别 转载
    JWT 使用的另一种声音
    JWT(Json Web Token):一种在Web应用中安全传递信息的规范 转载
    http 的session 工作原理。
    一般安全机制
    android 上传图片 .html 和android 客户端
    interpolator, typeEvaluator 以及属性动画的参数
  • 原文地址:https://www.cnblogs.com/wchhuangya/p/4573885.html
Copyright © 2011-2022 走看看