ios学习笔记(二)--代理设计模式
来源:互联网 发布:php空间免费 编辑:程序博客网 时间:2024/06/06 04:55
我使用这种设计模式,写了一个宠物购物的示例
接口:
#import <Foundation/Foundation.h>@protocol PetInterface <NSObject> @required -(void)PetKind; //什么种类的pet -(void)PetColor; //pet的颜色 @optional -(NSString *)getName;//取得宠物名称@end
Husky:
/* Husky.h */#import <Foundation/Foundation.h>#import "PetInterface.h"@interface Husky : NSObject <PetInterface>@end/* Husky.m */#import "Husky.h"@implementation Husky<span></span>//实现协议-(void)PetKind{ NSLog(@"Cute Husky...");}-(void)PetColor{ NSLog(@"White and Brown...");}-(NSString *)getName{ return @"Husky";}@end
柴犬:
/* chaiq.h */#import <Foundation/Foundation.h>#import "PetInterface.h"@interface Chaiq : NSObject<PetInterface>@end /* chaiq.m */#import "Chaiq.h"@implementation Chaiq-(void)PetKind{ NSLog(@"Cute ChaiQuan...");}-(void)PetColor{ NSLog(@"Big YELLOW...");}-(NSString *)getName{ return @"ChaiQuan";}@end
宠物代理商的代码:
/* delegate.h */#import <Foundation/Foundation.h>#include "PetInterface.h"@interface PetDelegate : NSObject <PetInterface>{ id<PetInterface> c;}-(void)salePet; -(instancetype)initWithPet:(id<PetInterface>)v;@end/* delegate.m */#import "PetDelegate.h"@implementation PetDelegate -(instancetype)initWithPet:(id<PetInterface>)v{ self = [super init]; if (self) { self->c = v; } return self; } -(void)PetColor{ [self->c PetColor]; } -(void)PetKind{ [self->c PetKind]; } -(void)salePet{ NSString *str = [self->c getName]; NSLog(@"Sale %@",str); } @end
实现一个购买宠物的过程
#import <Foundation/Foundation.h>#import "PetInterface.h"#import "PetDelegate.h"#import "Husky.h"#import "Chaiq.h"int main(int argc, const char * argv[]) { @autoreleasepool { Husky *husky = [[Husky alloc]init]; Chaiq *chaiq = [[Chaiq alloc]init]; PetDelegate *delegate1 = [[PetDelegate alloc]initWithPet:husky]; PetDelegate *delegate2 = [[PetDelegate alloc]initWithPet:chaiq]; [delegate1 PetKind]; //代理商向你介绍宠物的种类 [delegate1 PetColor];<span></span>//向你介绍宠物的颜色 [delegate1 salePet];<span></span>//决定购买 [delegate2 PetKind]; [delegate2 PetColor]; [delegate2 salePet]; } return 0;}
总结:
新技能get
0 0
- ios学习笔记(二)--代理设计模式
- 设计模式学习笔记(二)代理模式
- iOS学习(二十八)Objective-C 代理设计模式
- 设计模式之代理模式学习二----普通代理----------《设计模式之禅》学习笔记
- iOS设计模式 - 代理设计模式(Delegate)
- IOS设计模式学习(22)代理
- iOS设计模式学习 (二) OC协议之接口继承和代理设计
- [设计模式学习笔记]PROXY(代理)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之二(Proxy代理模式)
- 【树DP】UVA12929Aerial Tramway
- Callable和Future实现调用任务并返回结果数据
- linux grep命令
- 织梦js广告不显示原因,dedecms后台不显示广告预览(最新2016年2月29日)
- 算法学习----->Insertsort(插入排序)
- ios学习笔记(二)--代理设计模式
- [LeetCode]16 最接近的三者之和
- Redis作为多个Windows服务运行配置方法
- Java5中线程池的概念与Executors类的应用
- servlet返回json数据
- First
- 裁切图像设置圆角图像,不使用控件的layer.cornerRadius属性
- 【leetcode】1.Two Sum
- "秒"杀系统之深层考虑