黑马程序员技术交流社区
标题:
每日活动参与答题加金币or技术分!!!(第三日)
[打印本页]
作者:
★彬★卍囧神
时间:
2014-9-7 20:25
标题:
每日活动参与答题加金币or技术分!!!(第三日)
本帖最后由 ★彬★卍囧神 于 2014-9-7 20:26 编辑
现在推出每日一题按照格式回答合格的加技术分或者金币。小伙伴们帮你们的回答打出来吧,让我们共同进步!!!
第三题:请说说代理模式,请你设计一个代理模式?
答:XXX(有代码的插入代码模式)。
注:答出你的理解就行,复制抄袭不算。
参与人多将持续这个互动
作者:
noiary
时间:
2014-9-7 20:36
还没学到代理的肿么破.. 我是一个人嘛?
作者:
zhaihao
时间:
2014-9-7 20:57
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
作者:
kingloveyy
时间:
2014-9-7 21:43
学习一下~~~
作者:
xpaibeyond
时间:
2014-9-8 00:01
我的理解是, 我不想干的事,找别人帮我干。
作者:
徐闯楠
时间:
2014-9-8 10:10
我的理解就是设计一个接口,接口里面有好多功能,其他人通过调用接口里面的功能来实现自己想要的
作者:
cjfire
时间:
2014-9-8 10:55
代理,个人觉得如同JAVA中的接口,因为需要成为代理,就要遵守某个协议,而协议是一组方法的声明,而至于代理的类型,则没有关系。
作者:
___________H
时间:
2014-9-8 23:52
T T 我也还没学到这个呢。。。。
作者:
眼瞳╄渲染繁华
时间:
2014-9-10 15:04
还没学到
作者:
小月格子猫
时间:
2014-9-10 15:38
1 代理模式我这边比喻一下,是自己的事情,自己不做,让别人帮着做
2 但不是任何人都可以帮着做的,必须达到一定条件,这个条件就是做这些事情必须有的东西
也就是遵守协议了
3 让谁帮着做不重要,重要的是,一定要遵守协议哟,少年 = =
作者:
卖艺人
时间:
2014-9-10 19:48
弱弱的问一下神马是代理。。。
作者:
小叶子
时间:
2014-9-27 14:21
简单的例子。。。说说自己对代理模式的理解。1.buttonL.h
定义一个buttonL类,这个类只有一个方法,通知保镖我被打了
#import <Foundation/Foundation.h>
#import "baobiaoxieyi.h"
@interface buttonL : NSObject
//定义一个被打的地方
@property (nonatomic,copy)NSString *place;
//保镖遵守保镖协议
@property (nonatomic,strong)id<baobiaoxieyi> baobiao;
//被打了的方法
-(void)hited;
@end
复制代码
2.buttonL.m
#import "buttonL.h"
复制代码
3baobiaoxieyi.h(协议)
#import <Foundation/Foundation.h>
@protocol baobiaoxieyi <NSObject>
-(void)revenge:(NSString *)place;
@end
复制代码
4baobiao.h
#import <Foundation/Foundation.h>
#import "baobiaoxieyi.h"
@interface baobiao : NSObject<baobiaoxieyi>
@end
复制代码
5.baobiao.m
#import "baobiao.h"
@implementation baobiao
-(void)revenge:(NSString *)place{
NSLog(@"保镖赶到%@,打走了暴徒",place);
}
@end
复制代码
6mian函数
#import <Foundation/Foundation.h>
#import "buttonL.h"
#import "baobiao.h"
int main(int argc, const char * argv[])
{ @autoreleasepool {
buttonL *btn=[[buttonL alloc] init];
baobiao *bao1=[[baobiao alloc] init];
btn.place=@"黑马训练营";
btn.baobiao=bao1;
[btn hited]; }
return 0;
}
复制代码
7.输出结果
2014-09-27 14:16:50.693 简单的代理模式[1611:303] 我在黑马训练营被打了.
2014-09-27 14:16:50.695 简单的代理模式[1611:303] 保镖赶到黑马训练营,打走了暴徒
复制代码
作者:
AngleMGG
时间:
2014-9-27 16:11
代理模式,简单说就是,A想做一件事,但是自己不能完成,于是设置代理人B来 替他完成这个事情。创建一个类A一个类B,A的对象拥有B这个属性,而B的对象想要成为A的代理人,那么就必须遵循一个协议,这个协议包含代理行为。
比如一个孩子想洗澡,但太小了自己不能洗,所以通过找一个代理人来给他洗澡,协议中有“洗澡”这个方法,保姆或者妈妈都需要遵循这个协议才能称为代理人。
代码如:
#import <Foundation/Foundation.h>
#import "ShowerProtocol.h"
@interface Baby : NSObject
@property (nonatomic, strong) id<ShowerProtocol> agent;
- (void)shower;
@end
复制代码
#import "Baby.h"
@implementation Baby
-(void)shower
{
[_agent helpshower];
}
@end
复制代码
@protocol ShowerProtocol <NSObject>
- (void)helpshower;
@end
复制代码
#import <Foundation/Foundation.h>
#import "ShowerProtocol.h"
@interface Maid : NSObject<ShowerProtocol>
@end
#import "Maid.h"
@implementation Maid
- (void)helpshower
{
NSLog(@"保姆帮孩子洗澡");
}
@end
复制代码
#import <Foundation/Foundation.h>
#import "ShowerProtocol.h"
@interface Mama : NSObject<ShowerProtocol>
@end
#import "Mama.h"
@implementation Mama
-(void)helpshower
{
NSLog(@"妈妈帮孩子洗澡");
}
@end
复制代码
#import <Foundation/Foundation.h>
#import "Baby.h"
#import "Maid.h"
#import "Mama.h"
int main()
{
Baby *b = [[Baby alloc] init];
//保姆作为代理人
Maid *m = [[Maid alloc] init];
b.agent = m;
[b shower];
//妈妈作为代理人
Mama *mm = [[Mama alloc] init];
b.agent = mm;
[b shower];
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2