溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Your first iOS app(8)——Using Design Patterns

發(fā)布時(shí)間:2020-06-13 23:26:49 來(lái)源:網(wǎng)絡(luò) 閱讀:282 作者:三無(wú)青年 欄目:移動(dòng)開(kāi)發(fā)

Using Design Patterns

使用設(shè)計(jì)模式


設(shè)計(jì)模式解決通用軟件工程問(wèn)題。模式是抽象設(shè)計(jì),沒(méi)有代碼。當(dāng)你采用設(shè)計(jì)時(shí),你是使用通用模式到你的特殊需求中區(qū)。不管你創(chuàng)建何種類型的app,都應(yīng)該很好的知道框架中采用的基本設(shè)計(jì)模式。理解設(shè)計(jì)模式幫助你高效的使用框架,并且允許你編寫更加可復(fù)用性、更加可擴(kuò)展性和更加靈活的app。



MVC

模型視圖控制器 (MVC)是所有iOS app良好設(shè)計(jì)的核心。MVC把在app中的對(duì)象分為三種角色:模型、視圖、和控制器。在這個(gè)模式中,模型與app的數(shù)據(jù)保持聯(lián)系,視圖顯示你的用戶界面并組成app的內(nèi)容,控制器管理你的視圖。通過(guò)響應(yīng)用戶的動(dòng)作和使用內(nèi)容填充視圖,控制器承擔(dān)起了模型和視圖之間通信的功能。


當(dāng)你在建立ToDoList app的時(shí)候,你是跟隨著以MVC為核心的設(shè)計(jì)。你在故事板中建立的界面組成視圖層。XYZAddToDoItemViewControllerXYZToDoListViewController是控制器管理你的視圖。在Tutorial: Add Data中,你將合并數(shù)據(jù)來(lái)為app中的視圖和控制器工作。當(dāng)你開(kāi)始設(shè)計(jì)你自己的app的時(shí)候,在你的設(shè)計(jì)中保持MVC的核心位置是非常重要的。


Target-Action

目標(biāo)-動(dòng)作

目標(biāo)-動(dòng)作 是一個(gè)簡(jiǎn)單概念的設(shè)計(jì)模式,它在特定事件發(fā)生時(shí),由一個(gè)對(duì)象發(fā)送消息到另一個(gè)對(duì)象。動(dòng)作消息是一個(gè)在源代碼中定義的選擇器,而目標(biāo)——接收消息的對(duì)象——是有能力執(zhí)行動(dòng)作的對(duì)象,通常是一個(gè)視圖控制器。用作發(fā)送動(dòng)作消息的對(duì)象是控件——例如按鈕、滑塊、開(kāi)關(guān)——他們能觸發(fā)一個(gè)事件來(lái)響應(yīng)用戶的交互,例如輕拍、拖拽或者值改變。

例如,想象你想要在你的app中恢復(fù)默認(rèn)設(shè)置,用戶就輕拍Restore Defaults按鈕(在你的用戶界面創(chuàng)建)。首先,你實(shí)現(xiàn)一個(gè)動(dòng)作,restoreDefaults:,來(lái)實(shí)現(xiàn)恢復(fù)默認(rèn)設(shè)置。然后,你注冊(cè)按鈕的Touch Up Inside事件到restoreDefaults:發(fā)送動(dòng)作方法到視圖控制器來(lái)實(shí)現(xiàn)該方法。



你已經(jīng)在ToDoList app中使用了目標(biāo)-動(dòng)作模式。當(dāng)用戶輕拍XYZAddToDoItemViewController中的Done按鈕的時(shí)候,它的觸發(fā)的是unwindToList動(dòng)作。在這種情況下,Done按鈕是發(fā)送消息的對(duì)象,目標(biāo)對(duì)象是XYZToDoListViewController,動(dòng)作消息是unwindToList,這個(gè)事件觸發(fā)動(dòng)作消息被發(fā)送是用戶輕拍了Done按鈕。目標(biāo)-動(dòng)作模式是一個(gè)app中的不同部分定義交互并發(fā)送消息的強(qiáng)大的機(jī)制。


Delegation

委托模式

Delegation委托 is a simple and powerful pattern in which one object in an app acts on behalf of, or in coordination with, another object. The delegating object keeps a reference to the other object—the delegate—and at the appropriate time sends a message to it. The message informs the delegate of an event that the delegating object is about to handle or has just handled. The delegate may respond to the message by updating the appearance (or state) of itself or of other objects in the app, and in some cases it will return a value that affects how an impending event is handled.


委托設(shè)計(jì)模式在框架類中普遍存在,但你也能在兩個(gè)自定義的對(duì)象中實(shí)現(xiàn)代理。常見(jiàn)的設(shè)計(jì)使用委托意味著允許子視圖控制器與父視圖控制器要進(jìn)行值(通常是用戶輸入的值)的交流。

你還不能使用代理模式,但在Tutorial: Add Data中,當(dāng)你添加額外的行為到你的XYZToDoListViewController類中時(shí),你將看到一個(gè)它的例子

這些都是一些常用的設(shè)計(jì)模式,你將在iOS開(kāi)發(fā)中遇到他們,但還有更多的。當(dāng)你學(xué)習(xí)更多的關(guān)于Objective-C的知識(shí)的時(shí)候,你將發(fā)現(xiàn)你能使用其他的設(shè)計(jì)模式到你的app中。

Incorporating the Data

Working with Foundation

Copyright 2014 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2013-10-22






向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI