首页 / 设计模式 / IOS基础之 (设计模式)
IOS基础之 (设计模式)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了IOS基础之 (设计模式),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3261字,纯文字阅读大概需要5分钟。
内容图文
一 工厂方法
工厂方法方便我们快速创建类的实例的方法。通过工厂方法,可以让调用过程更加清晰。
Person.h
1 #import <Foundation/Foundation.h> 2 3@interface Person : NSObject 4{ 5int _age; 6 NSString * _name; 7} 8 9 - (int)age; 10 - (NSString *) name; 1112 + (NSString *) personWithAge:(int)age andName:(NSString *) name; 13 - (id) initWithAge:(int)age andName:(NSString*)name; 1415 @end
Person.m
1 #import "Person.h" 2 3@implementation Person 4 5 - (int)age{ 6return _age; 7} 8 9 - (NSString *) name{ 10return _name; 11} 121314 + (NSString *)personWithAge:(int)age andName:(NSString *)name{ 15return [[Person alloc ]initWithAge:age andName:name ]; 16}; 1718 - (id)initWithAge:(int)age andName:(NSString *)name{ 19 self = [super init]; 20if(self != nil){ 21 _age = age; 22 _name = name; 23 } 24return self; 25} 2627 - (NSString *)description{ 28return [NSString stringWithFormat: @"人的年龄是%d,名字是%@", self.age, self.name ]; 29 }
main.h
1 #import <Foundation/Foundation.h> 2 #import "Person.h" 3 4 5int main(int argc, constchar * argv[]) { 6 7 Person *p1 = [Person personWithAge:20 andName: @"lisi"]; 8 NSLog(@"%@" , p1); 910return0; 11 }
二 代理设计模式
设计原理
有些麻烦的事情不想自己亲自做,就可以找个人帮忙,即交给代理对象去做。
设计原则
首先的拥有某个代理对象属性。其次要很清楚代理有哪些方法。最后要保证能解耦。
实现方案
定义一个protocol,在其中声明一些和代理沟通的方法。
拥有一个代理属性 id<protocol> delegate
让代理遵守protocol.
实例: 保姆与小孩
1.当A对象想监听B对象的一些变化时, 可以使用代理设计模式 保姆想监听婴儿的变化, 那么保姆就可以成为婴儿的代理, 当婴儿发生变化之后保姆就可以监听到.
2.当B对象发生一些事情, 想通知A对象的时候, 可以使用代理设计模式 婴儿想通知保姆, 那么就可以 让保姆成为婴儿的代理, 只要保姆成为婴儿的代理, 以后婴儿发生变化就可以通知保姆.
3.当对象A无法处理某些行为的时候,想让对象B帮忙处理(让对象B成为对象A的代理对象) 婴儿无法自己吃东西, 也无法自己入睡, 所以可以让保姆帮忙处理. 只要让保姆成为婴儿的代理就可以帮婴儿喂它吃东西和哄他睡觉.
三 delegate模式
IPeople.h
1 #import <Foundation/Foundation.h> 2 3 @protocol IPeople <NSObject> 4 5 - (int) age; 6 7 - (void)setAge:(int)age; 8 9 - (NSString*)name; 1011 @end
ManDelegate.h
1 #import <Foundation/Foundation.h> 23 @protocol ManDelegate <NSObject> 45 - (void) onAgeChanged:(int) age; 67 @end
Man.h
1 #import <Foundation/Foundation.h> 2 #import "IPeople.h" 3 #import "ManDelegate.h" 4 5 @interface Man : NSObject<IPeople> 6{ 7int _age; 8} 910 - (id) init; 1112 - (int) age; 1314 - (void) setAge:(int)age; 1516 - (NSString *)name; 1718 @property id<ManDelegate> delegate; 1920 @end
Man.m
1 #import "Man.h" 2 3@implementation Man 4 5 - (id)init{ 6 self = [super init]; 7if( self ){ 8 self.delegate=nil; 9 _age = 20; 10 } 1112return self; 13} 1415 - (int) age{ 16return _age ; 17} 1819 - (void)setAge:(int)age{ 20if (age != _age) { 21if(self.delegate){ 22 [self.delegate onAgeChanged:age]; 23 } 24 } 2526 _age = age; 27} 2829 - (NSString *)name{ 30return@"lisi"; 31} 3233 @end
Main.m
1 #import <Foundation/Foundation.h> 2 #import "Man.h" 3 #import "ManDelegate.h" 4 5 @interface MainListener : NSObject<ManDelegate> 6 - (void) onAgeChanged:(int) age; 7@end 8 9@implementation MainListener 1011 - (void)onAgeChanged:(int)age{ 12 NSLog(@"Age changed, Current age is %d" , age); 13} 1415@end 1617int main(int argc, constchar * argv[]) { 18 Man *man = [[Man alloc]init]; 19// man.delegate = [[MainListener alloc]init];20 [man setDelegate: [[MainListener alloc]init] ]; 2122//[man setAge:20];23 [man setAge:21]; 2425return0; 26 }
参考资料:
http://www.cnblogs.com/king129/p/4943875.html
原文:http://www.cnblogs.com/wangshuo1/p/iOS-100.html
内容总结
以上是互联网集市为您收集整理的IOS基础之 (设计模式)全部内容,希望文章能够帮你解决IOS基础之 (设计模式)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。