iOS的基本設計模式

來源:互聯網
上載者:User

參考網站:http://marshal.easymorse.com/archives/3296

在iOS中有一些基本的設計模式:

  • delegation
  • protocol
  • model-vew-controller
  • target-action
  • notification
  • declared properties

下面分別介紹一下各個設計模式的用途。

Delegation

摘自:http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

這是Apple的權威解釋。

delegation,委託模式(另外有個常用的proxy模式,二者的區別是代理模式一般要更嚴格,實現相同的介面,委託只是引用被委派物件),是簡單的強大的模式,可讓一個對象扮演另外對象的行為。委派物件保持到另外對象的引用,並在適當的時候發訊息給另外對象。委派物件可以在發送訊息的時候做一些額外的事情。

在cocoa架構中的委託模式,委派物件往往是架構中的對象,被委派物件是自訂的controller對象。委派物件保持一個到被委派物件的弱引用。

在該文檔中所舉的例子是mac下開發的樣本。

這裡被委派物件是NSWindow類的一個執行個體,該類聲明了協議(protocol),其中有個方法是windowShouldClose,當使用者點擊視窗的關閉按鈕的時候,視窗對象將發送windowShouldClose訊息給代理對象(windowDelegate),詢問是否確認關閉視窗。代理對象返回一個bool值,因此控制了視窗對象的行為。

在iOS中也有類似的樣本,在建立的項目中,classes目錄中會有xxAppDelegate,這就是委託類。在該委託類執行個體中,引用了UIWindow和Controller。可以類似上面mac樣本控制被引用對象的行為。

Protocol

可以認為是java中的介面(interface)。在iOS中有兩種protocol:

  • 正式的protocol:通過@interface聲明,要求子類實現方法,可以強制實現(@required)或者可選(@optional),正式的protocol是對objc語言的擴充;
  • 非正式的protocol是NSObject的一個category,category是objc語言的一個特性,可以讓你為一個類增加方法而不需要實現子類。非正式protocol實現方法是可選的。在可選的protocol方法未引入objc 2.0以前,非正式的protocol是在foundation和appkit類中實現委託的基本方式
Model-View-Controller

MVC設計模式大家應該很熟悉了,不多說了。

Target-Action

摘自:http://developer.apple.com/library/ios/#documentation/general/conceptual/Devpedia-CocoaApp/TargetAction.html

target-action是個設計模式。對象保持必要的資訊,當事件發生的時候發送訊息給其他對象。所保持的資訊有兩部分資料群組成:

  • action selector,定義要調用的方法名稱標識;
  • target,接收訊息的對象。

當被稱作action message的事件發生,將向target發送action selector定義的方法訊息。

target-action模式一般用於自訂的controller按照應用規範定義的方式處理action message。


Notification

一個notification,即一個通知,是一個訊息,是用於通知一到多個觀察者對象程式當前有一個事件發生。這裡,接收通知的一方叫觀察者,observer。實際上是觀察者模式。

這裡,發送通知的對象,並不知道誰會收到這個通知。這樣通知者和觀察者之間鬆散耦合。

 

 

 

 

Declared property

字面意思是聲明的屬性。比如:

@property (<#attributes#>) <#type#> <#name#>;

是增強objc文法,簡化編寫代碼的“文法糖”性質的東西。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.