IOS设计模式第一篇之MVC
设计模式的好处:我们可以写出容易理解,重用度很高的代码。降低代码的耦合度,符合软件工程的思想。
设计模式主要分为三类:创造型的:单例和抽象工厂。结构类型的:
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的更多相关文章
- IOS设计模式第九篇之备忘录模式
版权声明:原创作品,谢绝转载!否则将追究法律责任. 备忘录模式捕获和具体化对象的内部状态.换句话说,它可以节省你的东西后来,这种外部状态可以恢复在不违反封装; 也就是说,私人数据是私有的. 怎么用备忘 ...
- IOS设计模式第二篇之单例设计模式
现在我们的组件已经有组织了.你需要从其他的地方得到数据,你也可以创建一个API类管理数据这个下个设计模式单例里面介绍. 这个单例设计模式确保这个类仅仅拥有一个实例,并且为这个实例提供一个全局的访问点. ...
- IOS UI 第一篇:基本UI
1. UI 书写 最基本创建一个label 标签 写一个first rate : UILabel *label = [[UILabel alloc] initWithFrame:CGRect ...
- IOS设计模式之一(MVC模式,单例模式)
iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不 ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- iOS开发UI篇—从代码的逐步优化看MVC
iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他 ...
- iOS开发——高级技术精选&底层开发之越狱开发第一篇
底层开发之越狱开发第一篇 做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结.个人不推荐使用盗版,这里主要以技术介绍为主. 这个系列里面主要介绍怎样进 ...
- IOS设计模式之三:MVC模式
IOS设计模式之三:MVC模式 模型-视图-控制器 这个模式其实应该叫做MCV,用控制器把model与view隔开才对,也就是model与view互相不知道对方的存在,没有任何瓜葛,他们就像一个团 ...
- “MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第一篇
一.第一篇内容中必须得简单的介绍一下MVC(在大学时用的是WebForm,拖控件感觉很爽,但是工作后,技术总监让一定要放弃这种 想法!) 1.MVC是什么?:(1) ASP.NET MVC是微软官方提 ...
随机推荐
- timer--计时器
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- IIS-反向代理
测试环境:Windows10.IIS/10.0 1.安装ARR.URL Rewrite(URL重写工具2.0) 注意英文和中文环境的对应: Application Request Routing 对应 ...
- U盘安装Win7操作系统
玩转Windows7系统镜像四部曲 Step 1: 下载Win7 ISO系统镜像 温馨提示:请您尽量选用Win7之家提供的官方原版镜像安装,因为正版比各种所谓的"精简版.纯净版" ...
- Composer设置忽略版本匹配的方法
Composer简介 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.Composer 不是一个包管理器.是的,它涉及 "pa ...
- python---生成随机密码
#简短地生成随机密码,包括大小写字母.数字,可以指定密码长度 from random import choice import string #python3中为string.ascii_letter ...
- 【AT91SAM3S】ADC中断方式采集数据
板子依旧是英倍特的EK-SAM3S.ADC部分的原理图如下: PB1是一个复用引脚,在这里被用作AD功能,对应芯片上的AD5.即,使用片内ADC的5通道测VR1上2号引脚的电压. 实验采用了SysTi ...
- #ifdef #ifndef使用
#ifdef THREAD_ON while (TRUE) #endif 如上没定义THREAD_ON时,是不会跑到while中去的 如上没定义THREAD_ON时,是会跑到else中去的 #ifnd ...
- nbu恢复 oracle10g rac asm 到单实例asm(恢复某个表空间)
一 检验条件 二 准备工作 1 创建相关目录 mkdir -p /oracle/admin/orcl/adumpmkdir -p /oracle/admin/orcl/bdumpmkdir -p /o ...
- Dapper ORM 用法—Net下无敌的ORM
假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上Dapper这款ROM.点击下载Dapper的优势:1,Dapper是一个轻型的ORM类.代码就一个SqlMapper.cs文件,编译后 ...
- 使用nginx部署Yii 2.0\yii-basic-app-2.0.5
nginx.conf #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log noti ...