iOS设计模式

一、设计模式

a)               所谓模式就是在某种情境下针对某问题的某种解决方案;

b)              设计模式基本来源于GoF,共23种;

二、单例模式

a)               单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。

#import "Singlton.h"

@implementation Singlton

//只在编译期进行初始化 只能被本文件访问
static Singlton * sharedSingleton = nil;

/**
 * 单例模式:保证自始自终只有一个实例
 * 系统单例:UIApplication UIAccelerometer NSBundle NSFileManager NSNotificationCenter NSUserDefaults
 */
+ (instancetype)sharedSingleton {
    //dispatch_once_t结构体
    static dispatch_once_t once;
    //只会执行一次且同步
    dispatch_once(&once, ^{
        sharedSingleton = [[Singlton alloc] init];
    });
    return sharedSingleton;
}


@end

三、委托模式

a)               委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。

//ProgrammerDelegate.h文件

/*
 * 定义协议作为公共类和委托类的中间人
 */
#import <Foundation/Foundation.h>

@protocol ProgrammerDelegate <NSObject>

@required
- (void)code;

- (void)sleep;

- (void)eat;

@end

//Coder.h Coder.m
#import <Foundation/Foundation.h>
#import "ProgrammerDelegate.h"

/*
 * 委托类实现协议 记得要设置 Programmer * programmer = [[Programmer alloc] init]; programmer.delegate = self;
 */
@interface Coder : NSObject <ProgrammerDelegate>

@end

#import "Coder.h"

@implementation Coder

- (void)code {
    NSLog(@"I am a coder, I can code.");
}

- (void)sleep {
    NSLog(@"I am a coder, I can sleep.");
}

- (void)eat {
    NSLog(@"I am a coder, I can eat.");    
}

@end
//Programmer.h Programmer.m
#import <Foundation/Foundation.h>

/*
 * 公共类 或者 框架类 是老板 要委托给别人 被人必须满足协议的条件
 */
@interface Programmer : NSObject

- (void)beAPerson;

@end

#import "Programmer.h"
#import "ProgrammerDelegate.h"

@interface Programmer ()

@property (nonatomic, weak) id<ProgrammerDelegate> delegate;

@end

@implementation Programmer

- (void)beAPerson {
    [_delegate eat];
    [_delegate sleep];
    [_delegate code];
}

@end

四、观察者模式

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

//Observer.h Subject.h

#import <Foundation/Foundation.h>

/**
 * 提供update方法进行数据更新
 */
@protocol Observer <NSObject>

@required
- (void)update:(NSString *);

@end

#import <Foundation/Foundation.h>
/**
 * 定义Subject协议 提供注册 取消 通知方法
 * 通知方法:通知所有的观察者数据更新
 */
@protocol Subject <NSObject>

@required
- (void)registerObserver:(Observer *);

- (void)upregisterObserver:(Observer *);

- (void)notifyObservers;

@end

五、MVC框架模式

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

小结:设计模式是程序设计的思想结晶,嗯,好好学习!!!常用的还有简单工厂/策略模式/。我差不多就用过这么多吧,其它的略懂,但是实际工作没用过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬李先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值