中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

wordpress寄出郵箱地址小學生班級優(yōu)化大師

wordpress寄出郵箱地址,小學生班級優(yōu)化大師,二次元網(wǎng)站模板,企業(yè)查查官網(wǎng)登錄入口文章目錄 前言MVC架構(gòu)模式基本概念通信方式簡單應用 總結(jié) 前言 “MVC”,即Model(模型),View(視圖),Controller(控制器),MVC模式是架構(gòu)模式的一種。 關(guān)于“架構(gòu)模式”&a…

文章目錄

  • 前言
  • MVC架構(gòu)模式
    • 基本概念
    • 通信方式
    • 簡單應用
  • 總結(jié)

前言

“MVC”,即Model(模型),View(視圖),Controller(控制器),MVC模式是架構(gòu)模式的一種。

關(guān)于“架構(gòu)模式”:

架構(gòu)模式(Architectural Pattern)是軟件架構(gòu)中常見的組織結(jié)構(gòu)解決方案,用于指導大型軟件系統(tǒng)的設計。它們描述了軟件系統(tǒng)常見的組織結(jié)構(gòu)和它們之間的相互關(guān)系,為構(gòu)建復雜軟件系統(tǒng)提供了經(jīng)驗證的解決方案。架構(gòu)模式提供了一種通用的、可重用的解決方案來處理在軟件設計中遇到的常見問題。

常見的架構(gòu)模式包括:

1.分層模式(Layered Pattern)
將系統(tǒng)分割成多個層次,每一層提供特定的服務,并且只與相鄰層次通信。例如,一個典型的三層架構(gòu)包括表示層(用戶界面)、業(yè)務邏輯層和數(shù)據(jù)訪問層。
2.客戶端-服務器模式(Client-Server Pattern)
系統(tǒng)分為兩部分:服務器提供服務,客戶端請求服務。這種模式廣泛應用于網(wǎng)絡應用程序。
3.模型-視圖-控制器模式(Model-View-Controller Pattern, MVC)
用于實現(xiàn)用戶界面的分離關(guān)注點,將應用程序分為三個核心組件:模型(數(shù)據(jù)和業(yè)務邏輯)、視圖(用戶界面)和控制器(業(yè)務邏輯和用戶界面之間的通信)。
4.管道-過濾器模式(Pipeline-Filter Pattern)
在這種模式中,每個處理步驟(過濾器)作為數(shù)據(jù)流(管道)中的一個階段,數(shù)據(jù)流從一個過濾器流向下一個過濾器。
5.事件驅(qū)動架構(gòu)模式(Event-Driven Pattern)
系統(tǒng)作為一系列異步事件和回調(diào)處理函數(shù)的集合。這種模式適用于需要高響應性和可伸縮性的應用。
6.微內(nèi)核模式(Microkernel Pattern)
系統(tǒng)的核心功能由一個小型的、可擴展的內(nèi)核提供,其他功能則作為插件或模塊附加在內(nèi)核周圍。
7.代理模式(Proxy Pattern)
為其他對象提供一個代理或占位符,以控制對這個對象的訪問。這在遠程代理、虛擬代理和保護代理中很常見。
8.發(fā)布-訂閱模式(Publish-Subscribe Pattern)
一種事件驅(qū)動的通信模式,發(fā)布者發(fā)送事件,而訂閱者對這些事件做出響應,但發(fā)布者和訂閱者之間沒有直接的聯(lián)系。
9.黑板模式(Blackboard Pattern)
多個模塊或組件通過一個共享的數(shù)據(jù)空間(黑板)進行通信和協(xié)作,以解決復雜問題。
10.MVC的變體模式
包括表現(xiàn)層-業(yè)務邏輯層-數(shù)據(jù)訪問層(Presentation-Logic-Data Access, PLDA)、模型-視圖-視圖模型(Model-View-ViewModel, MVVM)和模型-視圖-適配器(Model-View-Adapter, MVA)等。

MVC架構(gòu)模式

基本概念

‘M’——模型(Model):視圖類所需要的數(shù)據(jù),例如:表格需要顯示的文字。
‘V’——視圖(View):屏幕上顯示的UI,響應用戶事件,接受用戶輸入。例如:按鈕,標簽,進度條等。
‘C’——控制器(Controller):連接視圖類和模型類,任務是使數(shù)據(jù)顯示在屏幕上,主要負責轉(zhuǎn)發(fā)請求,對請求進行處理。例如:控制器將表格需要使用的數(shù)據(jù)“填入”表格視圖中,將表格視圖顯示出來。

關(guān)于這三者的關(guān)系,我參考了如下圖例來理解:

斯坦福大學的iOS公開課第一課:
在這里插入圖片描述
蘋果官方的圖解:
在這里插入圖片描述
在這里可以看出來“V”和“M”是相互獨立的,在iOS開發(fā)的MVC框架中,我們可以理解為view和model相互獨立,兩者屬于不知道對方的存在的陌生人關(guān)系。

??Model 和 View 是相互獨立的
這是很容易犯錯的一點,因為MVC 架構(gòu)模式是在軟件設計中通用的,不只是iOS 開發(fā)。iOS 開發(fā)中的MVC模式是基于傳統(tǒng)的MVC 架構(gòu)的,只是在具體實現(xiàn)上有所不同。Apple 官方對于iOS開發(fā)中的MVC 模式和傳統(tǒng)的MVC 架構(gòu)有所不同,如果查閱傳統(tǒng)的MVC 架構(gòu)會發(fā)現(xiàn),View 和Model 之間是有通信的。
(轉(zhuǎn)自 SungKaikai 文章鏈接)

通信方式

  1. 控制器C可以直接訪問模型M:將模型直接作為控制器的屬性。
  2. 控制器C可以直接訪問視圖V:將視圖直接作為控制器的屬性。
  3. 模型M與視圖V無法直接訪問對方:二者完全解耦,不能引用對方,把對方設置為屬性。
  4. 視圖V到控制器C的通信:
    目標動作機制(target - action):用戶與視圖交互觸發(fā)控制器的方法。例如:點擊按鈕后實現(xiàn)視界面跳轉(zhuǎn),網(wǎng)絡請求,刷新UI等。
    委托機制(delegate):視圖向控制器詢問某些自己無法決定的事情,或是讓控制器幫助自己做一些自己獨立無法完成的事情。 因為控制器才是掌握全局的角色,很多時候視圖是無法自己做決定的。例如:表格問控制器:我可以滾動么?然后控制器給予回答告知是否可以繼續(xù)滾動。 如果表格的高度很小,那么就可以不讓它滾動。但是如果表格的高度已經(jīng)超過了屏幕的高度,這時候如果讓它自作主張無法滾動就不好了。
    數(shù)據(jù)源機制(dataSource):視圖讓控制器給它將要顯示的數(shù)據(jù)。例如:音樂的數(shù)據(jù)存在于模型里,控制器訪問模型,從模型里拿到數(shù)據(jù)后告訴視圖如何顯示出歌曲。
  5. 模型M到控制器C的通信
    廣播機制(Notification):控制器注冊監(jiān)聽某模型數(shù)據(jù)變化的廣播頻道,當此模型數(shù)據(jù)變化后向該控制器發(fā)送廣播,告知模型變化情況。
    KVO機制(Key-Value Observing):模型作為控制器的屬性,當模型屬性被修改后,持有此模型屬性的控制器就會收到通知。

——斯坦福大學iOS開發(fā)公開課總結(jié)(一):iOS的MVC框架

簡單應用

先看看創(chuàng)建的文件:
在這里插入圖片描述
1.創(chuàng)建 Model
模型通常是一個或多個類,它們包含數(shù)據(jù)和對數(shù)據(jù)進行操作的方法。例如,一個簡單的Person測試模型:

#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface TestModel : NSObject@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSNumber *age;- (void)performAction;@endNS_ASSUME_NONNULL_END
#import "TestModel.h"@implementation TestModel- (void)performAction {// 這里可以放置一些業(yè)務邏輯,例如打印一條消息NSLog(@"Hello, my name is %@ and I am %@ years old.", self.name, self.age);
}@end

這里的代碼存在一些bug,后續(xù)筆者修改后會再呈現(xiàn)完整代碼。

總結(jié)

在模型類里是不能調(diào)用控制器的方法的,模型類只能被控制器調(diào)用并且當所擁有的數(shù)據(jù)改變后通知使用自己的控制器數(shù)據(jù)的改變。更不能直接給視圖通知讓視圖自己更新UI。

參考文章:iOS 架構(gòu)設計代碼實例學習-MVC 模式
????? 你真的了解MVC嗎?

http://www.risenshineclean.com/news/41784.html

相關(guān)文章:

  • 外貿(mào)平臺免費網(wǎng)站網(wǎng)站優(yōu)化推廣平臺
  • 學做網(wǎng)站設計需要多少錢網(wǎng)頁制作教程步驟
  • 網(wǎng)站建設整個過程個人介紹網(wǎng)頁制作
  • 做外貿(mào)在哪個網(wǎng)站北京百度推廣電話號碼
  • 上海阿里巴巴做網(wǎng)站免費的短視頻app大全下載
  • 商業(yè)網(wǎng)站改版需要多久愛站網(wǎng)綜合查詢
  • 無錫工廠網(wǎng)站建設南寧百度關(guān)鍵詞推廣
  • 松江營銷型網(wǎng)站建設b站是哪個網(wǎng)站
  • ui設計做兼職的網(wǎng)站如何寫市場調(diào)研報告
  • 女裝網(wǎng)站建設規(guī)劃網(wǎng)站怎樣被百度收錄
  • 怎么做網(wǎng)站的后臺管理系統(tǒng)手機360優(yōu)化大師官網(wǎng)
  • 微網(wǎng)站后臺怎么注冊互聯(lián)網(wǎng)推廣平臺有哪些公司
  • 辦公室現(xiàn)代簡約裝修效果圖武漢seo服務
  • 金山石化網(wǎng)站建設襄陽seo優(yōu)化排名
  • 做網(wǎng)站建設的上市公司有哪些百度競價是seo還是sem
  • lamp網(wǎng)站開發(fā) pdf企業(yè)網(wǎng)站建設需求分析
  • 做便民工具網(wǎng)站怎么樣百度問答兼職怎么做
  • 網(wǎng)站怎么防采集如何推廣普通話
  • 長子營網(wǎng)站建設產(chǎn)品優(yōu)化是什么意思
  • 做3d模型的叫什么牛的網(wǎng)站磁力鏈搜索引擎入口
  • 黃色風格網(wǎng)站模板商城小程序
  • 十堰網(wǎng)站建設兼職發(fā)軟文的平臺
  • 長沙的互聯(lián)網(wǎng)網(wǎng)站公司營銷培訓方案
  • 門戶網(wǎng)站系統(tǒng)設計sem全稱
  • wordpress qq客服代碼seo有什么作用
  • 廣州網(wǎng)站提升排名百度指數(shù)使用指南
  • 做發(fā)票網(wǎng)站淘寶如何刷關(guān)鍵詞增加權(quán)重
  • 可視化網(wǎng)站建設軟件百度競價品牌廣告
  • 專業(yè) 網(wǎng)站設計公司外貿(mào)網(wǎng)站seo教程
  • 北京公司網(wǎng)站建設價格廣州網(wǎng)站制作服務