设计模式的好处:我们可以写出容易理解,重用度很高的代码。降低代码的耦合度,符合软件工程的思想。

设计模式主要分为三类:创造型的:单例和抽象工厂。结构类型的:

MVC  Decorator, Adapter, Facade and Composite.等这几种模式

行为性的:Observer, Memento, Chain of Responsibility and Command.

讲讲第一个设计模式MVC,我们的iOS应用基本都是基于MVC的。

model:持有我们应用的数据,和定义怎么操控他。在你的应用里面就是Album 这个类

View:处理用户的操作和展示model,都是UIView的子类。在应用里面是AlbumView类

Controller:他的作用主要是用来协调View和model把数据展示到View上,就是应用的Viewcontroller类

model通知Controller如果有数据改变,在Controller更新数据在View上。View可以通知Controller用户执行的操作。然后Controller来更新数据。如果有任何数据更新请求。

你可能担心为什么不抛弃Controller呢,并且实现View和model在同样的类看起来更容易。

所有的这一切归功与代码的分离性和可重用性。理想情况下,我们应该让View和model分离,如果View不依赖与模型的具体实现。这样就可以用不同的model来表达不同的数据。

例如,在将来你也许添加movies或者books向你的库里。你仍然可以用同样的View来展示你的movies或者books对象。此外,你如果想创建一个新的项目来处理albums,你可以简单的重用你的专辑类,因为他不依赖任何View。这就是MVC的力量。

怎么使用MVC设计模式呢?

首先你需要确保你的项目中的每个类是一个控制器一个model一个View,不要把两个角色在一个类里面。你已经做好了很好的工作到目前位置你创建了一个Album 和一个AlbumView 类。

第二你为了确保这个方法可行还需要创建三个项目组来放置你的代码为每个类别。

创建三个文件夹一个是model 一个是view 还有一个Controller

现在把之前创建的类放到相应的位置。最后变成这样:

现在你的项目结构看的已经很清晰了,没有很多漂浮的文件,明显的你可以有其他的分组和类,但是应用的核心应该包括这三个类别。

来自英文教程翻译谢绝转载!!!未经允许不得转载维权必究!!!

本类目的设计模式是根据这个例子讲解

http://files.cnblogs.com/qiqibo/BlueLibrary-final.zip

IOS设计模式第一篇之MVC的更多相关文章

  1. IOS设计模式第九篇之备忘录模式

    版权声明:原创作品,谢绝转载!否则将追究法律责任. 备忘录模式捕获和具体化对象的内部状态.换句话说,它可以节省你的东西后来,这种外部状态可以恢复在不违反封装; 也就是说,私人数据是私有的. 怎么用备忘 ...

  2. IOS设计模式第二篇之单例设计模式

    现在我们的组件已经有组织了.你需要从其他的地方得到数据,你也可以创建一个API类管理数据这个下个设计模式单例里面介绍. 这个单例设计模式确保这个类仅仅拥有一个实例,并且为这个实例提供一个全局的访问点. ...

  3. IOS UI 第一篇:基本UI

    1. UI 书写 最基本创建一个label 标签 写一个first rate :      UILabel *label = [[UILabel alloc] initWithFrame:CGRect ...

  4. IOS设计模式之一(MVC模式,单例模式)

    iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不 ...

  5. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. iOS开发UI篇—从代码的逐步优化看MVC

    iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他 ...

  7. iOS开发——高级技术精选&底层开发之越狱开发第一篇

    底层开发之越狱开发第一篇 做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结.个人不推荐使用盗版,这里主要以技术介绍为主. 这个系列里面主要介绍怎样进 ...

  8. IOS设计模式之三:MVC模式

    IOS设计模式之三:MVC模式   模型-视图-控制器 这个模式其实应该叫做MCV,用控制器把model与view隔开才对,也就是model与view互相不知道对方的存在,没有任何瓜葛,他们就像一个团 ...

  9. “MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第一篇

    一.第一篇内容中必须得简单的介绍一下MVC(在大学时用的是WebForm,拖控件感觉很爽,但是工作后,技术总监让一定要放弃这种 想法!) 1.MVC是什么?:(1) ASP.NET MVC是微软官方提 ...

随机推荐

  1. Channel States

    Introduction A channel (a call) will go through many different states during its lifetime. Here we w ...

  2. Nginx-限制汇总

    http块 limit_conn_zone $binary_remote_addr zone=connperip:10m; limit_conn_zone $server_name zone=conn ...

  3. 转--webservice、socket、http 小记(一)

    webservice.socket.http 小记(一) http://blog.csdn.net/m_123hj_520/article/details/9370723 2013-07-18 17: ...

  4. 原创:cellmap 基站查询 for android

    cellmap for android 3.6.8.7.9.8 更新日期:2016年12月30日 特别声明:本软件不能进行手机定位,不能对手机号码定位,谨防被骗. 下载地址: cellmap3.6.8 ...

  5. Window环境下 Git 下载Android源码

    1.需要的工具 git.vpn代理 2. 设置git代理(Google source 无法下载,git设置代理) git config --global http.proxy "localh ...

  6. 关于MySql的DBHelper类以及数据分页

    前端: <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix=& ...

  7. Delphi 2010错误 "displayNotification: 内存不够"

    打开 Delphi 2010 的时候, 它报一个错误 "displayNotification: 内存不够",从而无法使用 Delphi , 解决办法 摘自http://www.cnblogs.com ...

  8. 【AT91SAM3S】SAM3S-EK Demo工程中,LCD驱动程序的加载(函数指针结构体)

    为了调试LCD,在英倍特的板子上烧Atmel的sam3s-ek_demo_1.4_source示例代码.LCD显示正常了,却找不到LCD的驱动究竟在哪. 花了好久,追踪到了这个执行过程. 进入main ...

  9. Oracle Commit 方式 COMMIT WRITE batch NOWAIT;

    1111 CREATE OR REPLACE PROCEDURE update_hav_tpnd IS  CURSOR hav_tpnd_cur IS    SELECT d.hav_tpnd, d. ...

  10. CPS冥想 - 1 重新审视CPS

    这篇文章是在阅读Eric Lippert大神的MSDN Blog文章时同步写成的,其中主要是各种翻译,同时还混杂自己阅读文章的笔记和感想. 原博文地址 http://blogs.msdn.com/b/ ...