iOS常用设计模式:MVC、单例、代理、观察者。

MVC

模型-视图-控制器(MVC)设计模式

MVC根据角色划分类,涉及到三个角色:

Model:模型保存应用程序的数据。

View:视图是模型的可视化表示以及用户交互的控件。

Controller:控制器是一个协调所有工作的中介者。它访问模型中的数据并在视图中展示它们,同时它们还监听事件和操作数据。



单例设计模式

单例设计模式可以确保对于一个类只有一个实例(对象)存在,这个对象有一个全局的访问点。通常采用懒加载的方式在第一次用到对象的时候才去创建它。

如何创建一个单例:

如:在SortDetailsModelDown.h中声明类方法+(SortDetailsModelDown *)shareSortDetailsModelDown;

在SortDetailsModelDown.m中实现该方法

static SortDetailsModelDown * single = nil;

+(SortDetailsModelDown *)shareSortDetailsModelDown{

@synchronized(self){

if (!single) {

single = [[SortDetailsModelDown alloc]init];

}

}

return single;

}



代理

自定义协议:

代理:遵循协议的对象

第一步:制定协议:(协议名:类名+Delegate)

@class MyView;
@protocol MyViewDelegate <NSObject>
@required //必须实现的方法
-(void)changeViewBackgroudColor:(MyView *)view;
@optional//可选方法
-(void)test;
@end

第二步:制定代理

@interface MyView : UIView
第二步:指定代理
@property (nonatomic,assign)id<MyView> delegate;
@end

第三步:代理遵循协议.

第四步:代理实现协议里面的必须实现的方法和其他可选方法.

第五步:委托方通知代理开始执行方法.



观察者

KVO  Key-Value Observing.它是一种机制,当指定的对象的属性被修改后,KVO自动通知相应的观察者。

  1. 注册观察者[message addObserver:self forKeyPath:kKVOPathKey options:NSKeyValueObservingOptionNew context:Nil];
  2. 更改主题对象属性的值,即触发发送更改的通知 _message.key = @"asdfasd";
  3. 在制定的回调函数中,处理收到的更改通知

    1

    2

    3

    4

    5

    6

    - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

    {

     if ([keyPath isEqual:kKVOPathKey] &amp;&amp; object == _message) {

         NSLog(@"get %@",change);

     }

    }

  4. 注销观察者 [_message removeObserver:self forKeyPath:kKVOPathKey];
时间: 2024-12-17 19:29:32

iOS常用设计模式:MVC、单例、代理、观察者。的相关文章

iOS开发——高级篇——iOS中常见的设计模式(MVC/单例/委托/观察者)

关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. 首先得搞清楚设计模式是个什么鬼,在软件设计领域,设计模式是对通用问题的可复用的解决方案.设计模式是一系列帮你写出更可理解和复用代码的模板,设计模式帮你创建松耦合的代码以便你不需要费多大力就可以改变或者替换代码中的组件 其实iOS中的设计模式有非常多,常用的就下面这四种 一.MVC设计模式(设计模式

常用设计模式(单例,代理,工厂,观察者)

单例:线程池.任务管理器. 1.饿汉模式:类加载时就创建好单例对象,调用静态方法返回单例对象,不需要考虑多线程问题. class Singleton{ private static singleInstance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return singleInstance; } } 2.懒汉模式:在调用方法时再创建单例对象 class Singleton{

iOS开发设计模式之单例设计模式

单例设计模式 是一种常用的软件设计模式,保证系统中的一个类只有一个实例而且该实例易于被外界访问. 单例的英文:singleton,在数学中的含义是:有且仅有一个元素的集合. 如果希望系统中某个类的对象只能存在一个,单例模式是最好的解决方案 优点: 可以阻止其他对象实例化对象的副本,从而确保所有对象都访问唯一实例 缺点: 单例对象一旦创建,对象指针保存在全局静态区,而单例对象在堆中分配内存空间,在应用程序终止后才会被释放 使用到单例设计模式的类:(大部分用于管理系统的资源) UIApplicati

iOS常用设计模式和机制之代理

Delegate : 1 代理设计模式的使用我们首先需要明白三个要素 *委托方:委托别人去执行某些操作的人(对象) *代理方:被委托区执行某些操作的人(对象) *协议:(protocol)委托方需要代理方执行的操作 > 协议是一套标准(一堆方法的声明),只有 .h 文件.协议的定义以 @protocol 开始,以 @end 结束. > 协议中的方法默认是必须实现的,@required .关键字 @optional 修饰的方法是可选的,课实现也可不实现. 2 delegate 的设计步骤 步骤1

IOS常用设计模式——MVC模式(IOS开发)

Cocoa Touch中的MVC模式中,模型和视图不能进行通信,所有通信都是控制器完成. - 模型:是个较为特殊的对象,本质是视图的数据,Text Field输入的内容,Button上的标签都是模型,不一定非要创建一个模型类. - 视图:UIView,这个比较容易理解,向控制器发送请求. - 控制器:更新视图作为对用户请求的回应,更新模型的数据. 模型里面就是数据,视图就是个界面,控制器是中间的更新媒介. 1.触摸myButton时候,会触发方法. 2.视图控制器实现了一些委托和数据源的协议.

常用设计模式之单例

Code 1 // 饿汉式 2 public class Singleton{ 3 private Singleton(){} 4 private static final Singleton instance = new Singleton(); 5 public static Singleton getInstance(){ 6 return instance ; 7 } 8 } 9 // 静态代码块 10 public class Singleton { 11 private Single

单例、观察者、代理、备忘录、工厂

单例.观察者.代理.备忘录.工厂 分类: java 2014-07-03 10:13 364人阅读 评论(0) 收藏 举报 一.Singleton单例模式 Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单类模式的类只能有一个实例对象存在. 1.饱汉模式,声明时就创建实例对象 [java] view plaincopy public class Singleton1 { public static final Singleton1 instance =

iOS 设计模式之单例

设计模式:单例 一.  单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 单例模式的要点有三个:一是某个类只能有一个实例,二是它必须自行创建这个实例,三是它必须自行向整个系统提供这个实例. 二.单例模式结构图: 三. 单例的好处: 1.实例控制:单例模式会阻止其他对象实例化其自己的单例对象

iOS常用设计模式——单例模式

第一部分: 创建一个单例对象 单例的应用场景: 单例模式用于当一个类只能有一个实例的时候, 通常情况下这个"单例"代表的是某一个物理设备比如打印机,或是某种不可以有多个实例同时存在的虚拟资源或是系统属性比如一个程序的某个引擎或是数据.用单例模式加以控制是非常有必要的. 什么是单例模式? 单例是一种常用的软件设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在.许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为. 单例设计模式需要达到下面几个目的:1.

设计模式总纲——单例设计模式

前两天写了设计模式总纲,今天就来讲讲我们在工程代码中最最最常用的设计模式了——单例设计模式,这个模式在工程代码上的出现率几乎为99.99999%,但是虽然很常用,但是用的好的人却不多,今天我们就来深入的说一说单例设计模式. 在学习一项新的知识之前,我们都要向自己提出三个问题,为什么要用这个知识,这个知识用在哪里,这个知识怎么用?既 why,where,how,3W模式,我们先来谈谈为什么需要单例设计模式,先来想想,如果一个工具类,比如一个读取配置文件的工具类,这类工具只是特定的功能类,既读取指定