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

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

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. Java--RuntimeException(运行时异常)

    [转载自]:http://blog.csdn.net/qq7342272/article/details/7940741 java运行时异常是可能在java虚拟机正常工作时抛出的异常. java提供了 ...

  2. java之OOP

    类中属性的默认值 1.数字类型(int,short,byte,long,float,double)的初始化默认值是0 2.boolean的初始化默认值是false 3.引用类型的初始化默认值是null ...

  3. MySql取得日期(前一天、某一天)

    在测试一个统计表格,发现每次手写一个地址实在很烦,干脆就搞个自动计算好时间区间的东西.以下内容作为收获吧! 取得当天: SELECT curdate(); mysql> SELECT curda ...

  4. UIView的使用

    UIView是iOS中所有视图的基类,表示屏幕上的一块矩形区域. UIView的基本属性包括: 1.frame,控制视图的显示位置和大小 2.backgroundColor,控制视图的背景颜色 3.a ...

  5. Difference between applicationContext.xml and spring-servlet.xml in Spring Framework

    Question: Are applicationContext.xml and spring-servlet.xml related anyhow in Spring Framework? Will ...

  6. 【freemaker】之自定义指令通用select模版

    测试代码 @Test public void test08(){ List<Group> groups=Arrays.asList(new Group(1,"山口组") ...

  7. Oracle正确删除archivelog文件(转)

    from:http://www.itpub.net/thread-1636118-6-1.html Oracle在开启了归档模式后,会在指定的archive目录下产生很多的archivelog文件,而 ...

  8. 认识zookeeper

    之前稍微看了一下Hadoop相关的技术文档,有了解到Hbase用zookeeper做分布式应用程序协调服务. 现在做的项目里,也是用zookeeper做集群和负载均衡(从类名LoadBalance看来 ...

  9. ucenter 整合外部网站,实现登录等操作

    最近公司网站要出手机版,由于与论坛要有互通,实现会员的共享,由于对discuz不熟悉,起先考虑的是直接读取discuz的用户表,然后进行判断等操作,发现过于复杂,而且安全也不好. 前一段时间进行过论坛 ...

  10. 使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...