iOS常用设计模式

来源:互联网 发布:地理信息系统数据库 编辑:程序博客网 时间:2024/06/02 04:39

1、MVC模式

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

好处:使系统层次清晰、职责分明、易于维护。

例子:model数据,view视图,controller控制。以一个注册界面来说,model存放用户名、密码数据模型,view建立注册界面,controller写注册按钮点击的方法。


2、单例模式

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

实例:一般都是share,defaults开头的方法。例如[UIApplication sharedApplication]

3、观察者模式

观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图View>模式、源-收听者Listener>模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。

实例:通知中心,键值对改变通知的观察者。通知中心,注册通知中心,写通知中心方法,在想要发送消息的时候发送消息使通知中心调用通知中心方法,可传值,可一对一,一对多,多对一,非常灵活。
kvo,注册一个观察者,观察者方法中选择观察对象,也非常灵活,可以观察一个空间的属性的改变。

4、代理模式

抽象角色:通过接口或抽象类声明真实角色实现的业务方法。

代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。

真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。

实例:系统的delegate以及自定义的delegate。系统的,很多,我用的最多的tebleview的。自己的,更多了,界面间的传值,当然能做远远不止是传值,非常灵活,我在传值时基本上第一时间想到delegate和Notification,当然了这是自己写的时候,block也很好,只是基本上哪一种方法都能解决问题,就看个人习惯了。

5、工厂模式

创建对象的时候,我们一般是alloc一个对象,如果需要创建100个这样的对象,如果是在一个for循环中还好说,直接一句alloc就行了,但是事实并不那么如意,我们可能会在不同的地方去创建这个对象,那么我们可能需要写100句alloc 了,但是如果我们在创建对象的时候,需要在这些对象创建完之后,为它的一个属性添加一个固定的值,比方说都是某某学校的学生,那么可能有需要多些100行重复的代码了,那么,如果写一个-(void)createObj方法,把创建对象和学校属性写在这个方法里边,那么就是会省事很多,也就是说我们可以alloc 创建对象封装到一个方法里边,直接调用这个方法就可以了,这就是简单工厂方法


0 0
原创粉丝点击