一、设计模式
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被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
小结:设计模式是程序设计的思想结晶,嗯,好好学习!!!常用的还有简单工厂/策略模式/。我差不多就用过这么多吧,其它的略懂,但是实际工作没用过。