IOS开发指南读书笔记5(IOS 常用设计模式)

原创 2015年11月18日 11:36:15
IOS开发指南读书笔记5(IOS 常用设计模式)
1、单例模式
构造方法

@interface Singleton : NSObject

+(Singleton*)sharedInstance;

@property(nonatomic,strongNSString* singletonData;

@end

@implementation Singleton

@synthesize singletonData = _singletonData;

static Singleton* sharedInstance = nil;

+(Singleton*)sharedInstance

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        sharedInstance = [[self alloc]init];

    });

    return sharedInstance;

}

@end

 应用案例
UIApplication,UIAccelerometer,NSUserDefaults,NSNotificationCenter,NSFileManager,NSBundle


2、委托模式
构建方法

//委托协议
@protocol Delegate <NSObject>
 
//执行完毕
 
-(void)exeFinish;
 
@end


//通用类
@interface CustomClass : NSObject
 
 //委托对象
 
 @property(nonatomic,assignid<Delegate> delegate;
 
 -(void)doSomething;
 
 @end

 @implementation CustomClass

@synthesize delegate = _delegate;

-(void)doSomething

{

    //do something

      NSLog(@"通知委托对象事情做完了");

    if (self.delegate && [self.delegate respondsToSelector:@selector(exeFinish)]) {

        [self.delegate exeFinish];

    }    
 
}
 
@end

//委托实现类

@interface DelegateImplements : NSObject <Delegate>

@end 

@implementation DelegateImplements

-(void)exeFinish

{

    NSLog(@"执行完毕");
}
 
@end 


//创建对象
 
CustomClass* instance = [[CustomClass alloc]init];
 
DelegateImplements* delegate = [[DelegateImplements alloc]init];
 
instance.delegate = delegate;

  应用案例
UITextFieldDelegate,UITableViewDelegate,UIActionSheetDelegate等。

3、观察者模式

//抽象观察者

@protocol Observer<NSObject>

@required

-(void)update;

@end


//抽象主题

@protocol Subject<NSObject>

-(void)addObserver:(id<Observer>)observer;

-(void)removeObserver:(id<Observer>)observer;

@end


//真正观察者

@interface TrueObserver : NSObject<Observer>

@end


@im
plementation TrueObserver

 -(void)update
 
{
 
    NSLog(@"刷新");
 
}
 
@end


//真正主题
@interface TrueSubject : NSObject<Subject>
 
{
 
     //观察者数组
 
     NSMutableArray* observers;
 
 }

@property(nonatomic,strongNSMutableArray* observers;

+(TrueSubject*)sharedSubject;

@end


@implementation TrueSubject
 
@synthesize observers;
 
static TrueSubject* instance = nil;
 
+(TrueSubject*)sharedSubject
 
{
 
static dispatch_once_t onceToken;
 
    dispatch_once(&onceToken, ^{
     
instance = [[self alloc]init];
     
instance.observers = [NSMutableArray array];
 
});
 
 return instance;
 
}

-(void)addObserver:(id<Observer>)observer
 {
 
 [self.observers addObject:observers];
 
}

-(void)removeObserver:(id<Observer>)observer
{
 
  [self.observers removeObject:observers];
 
}

//通知所有对象
 
-(void)notifyAllOberser
 
{
 
for (id observer in self.observers) {
 
 [observer update];
 
}
 
}

@end 

实际案例NSNotificationCenter

 KVO机制

//KVO主题

@interface KVOSubject : NSObject

//观察属性

@property(nonatomic,copyNSString* observerProperty;

@end

//KVO观察者

@interface KVOObserver : NSObject
 
@end 

@implementation KVOSubject

@synthesize observerProperty;

-(id)init
{

    self = [super init];
 
 if (self) {
 
  KVOObserver* observer = [[KVOObserver alloc]init];
 
 [self addObserver:observer forKeyPath:@"observerProperty" options:NSKeyValueObservingOptionNew context:@"Pass Context"];

        self.observerProperty = @"呵呵";

        self.observerProperty = @"嘻嘻";

        self.observerProperty = @"hehe";

        [self removeObserver:observer forKeyPath:@"observerProperty"  context:@"Pass Context"];

    }

    return self;

}
@end

@implementation KVOObserver

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
 
{
 
NSLog(@"%@",change[@"new"]);
 
}
 
@end 


4、MVC设计模式(略,参考之前的帖子) 

几种常用的ios设计模式

iOS 中常用的开发模式介绍
  • u013129370
  • u013129370
  • 2015年10月04日 21:52
  • 378

Cocoa设计模式(iOS常用设计模式) Cocoa Design Patterns

本文描述了Cocoa中设计模式的主要实现,主要关注模型(Model) - 视图(View) - 控制器(Controller)和对象建模。 本章的主要目的是让您更深入地了解Cocoa的设计模式,并鼓励...
  • zyq522376829
  • zyq522376829
  • 2017年12月13日 14:39
  • 342

iOS开发-设计模式架构思维

开发一个程序一个项目,在用户界面以及产品概念完成了的时候都会面临一个 问题:这个程序或是项目需要什么设计模式呢?             通常人们都会去考虑设计模式,然后嵌入到项目中,然而忽略了最...
  • werctzzz
  • werctzzz
  • 2016年07月08日 14:48
  • 499

iOS开发那些事-iOS常用设计模式–委托模式

对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析。当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式、委托模式、观察者模式、MVC模式。 委托模式 ...
  • tonny_guan
  • tonny_guan
  • 2013年02月21日 16:55
  • 3266

两种语言,一个平台——《iOS开发指南:从Hello World到App Store上架(第4版)》

一个人做厨师几年也做不出好吃的菜,再怎么培训也做不好iOS;一个人只要勤学苦练,学好iOS只要看一本《iOS开发指南:从Hello World到App Store上架(第4版)》就够了。...
  • dongfeng9ge
  • dongfeng9ge
  • 2016年09月05日 08:20
  • 2935

从代码看iOS设计模式之MVP

//: Playground - noun: a place where people can play import UIKit import XCPlayground ...
  • u010548686
  • u010548686
  • 2017年06月19日 16:42
  • 436

IOS 设计模式 桥接模式(bridge)

转自:http://www.cnblogs.com/eagle927183/p/3483890.html 引言   在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多...
  • lcg910978041
  • lcg910978041
  • 2016年04月23日 21:12
  • 525

iOS设计模式解析(一) —— 开篇

花费半个月的时间完成对《Objective-C编程之道:iOS设计模式解析》的阅读,读来时而欢喜,时而疑惑,通过书本,我们能看到很多熟悉的方式、模式,但是也感慨于使用之精巧,设计之奇妙。不单是想立即在...
  • u013494674
  • u013494674
  • 2015年10月25日 17:32
  • 944

IOS设计模式浅析之桥接模式(Bridge)

引言   在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多个维度的变化,比如说大话设计模式书中所说的手机,它有两个变化的维度:一是手机的品牌,可能有三星、苹果等;...
  • cctvzxxz1
  • cctvzxxz1
  • 2014年10月15日 20:51
  • 3365

IOS开发指南读书笔记4(IOS API分类)

IOS开发指南读书笔记4(IOS API分类)  1、IOS 体系架构 2、Cocoa Touch层 3、Media层 4、Core Services层   ...
  • hahahakonghee
  • hahahakonghee
  • 2015年11月18日 11:35
  • 283
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS开发指南读书笔记5(IOS 常用设计模式)
举报原因:
原因补充:

(最多只允许输入30个字)