2016.01.13 代理设计模式

这几天都在用代码的形式在完成滑动解锁的功能,今天讲到了代理设计模式。

?代理设计模式

  首先,设计模式是什么:一种完成特定功能的方式。

类别Category:给已有的类添加方法。

代理Delegate:1.配置

        2.两个对象之间传递数据A(B) B-->A(A完成B的方法,但是B要将结果回调给A)

所有的设计模式都有一个固定的规范,所以代理设计模式也不例外:

  UnlockModel(功能类):

    1.写一套代理(协议)

      代理的方法就是回调的方式

      @property TextSettingDelegate<NSObject>

      //使用这个类对文本进行配置,用户配置完毕,通过这个方法将用户配置的数据回调给调用者。

      - (void)textWithSize:(CGFloat)size color:(UIColor *)color;

      @end

    2.声明一个变量记录调用者

      @property (assign, nonatomic) id<TextSettingDelegate> delegate;

        这里的id类型是为了适应使用这个代理的各种数据类型,而这里的assign是因为防止相互声明所有权而产生死锁。

    3.判断调用者是否实现了相应地回调方法(就是代理方法)

      if([self.delegate respondsToSelector:@selector(textWithSize:color:)]){

        [self.delegate textWithSize:30 color:[UIColor blueColor]];

      }

  使用者:

    1.服从代理

      @interface ViewController:

      UIViewController<TextSettingDelegate>

    2.设置功能类里面的delegate变量

      //配置调用者为当前的这个对象

      svc.delegate = self;

        (告诉功能类,功能类的毁掉方法在哪里实现,换句话说就是谁来接收回调数据)

    3.实现相应的代理方法(谁接收,谁就实现)

      - (void)textWithSize:(CGFloat)size color:(UIColor *)color{

        self.sambolLabel.textColor = color;

        self.sambolLabel.font = [UIFont systemFontOfSize:size];

      }

时间: 2024-12-27 09:06:05

2016.01.13 代理设计模式的相关文章

2016.01.13总结

2016/01/13开始学习git:管理修改、撤销修改

一.管理修改 第一次修改readme.txt       : 增加一行Git tracks changes. 添加readme.txt                :       git add readme.txt 第二次修改readme.txt        : 修改Git tracks changes.为Git tracks changes of files. 提交readme.txt                :     git commit -m "git tracks chan

2016/01/13开始学习git:删除文件

1.在E:\learngit\文件夹(工作区)下删除file1.txt文件 rm file1.txt git status 查看库状态会有提示: deleted:    file1.txt 2.如果想要删除库里边的file1.txt $ git rm file1.txtrm 'file1.txt' $ git commit -m "remove file1.txt"[master f9bc4cf] remove file1.txt 1 file changed, 0 insertion

2016/01/13开始学习git:远程仓库

//github 我的163邮箱注册的 第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件, 如果已经有了,可直接跳到下一步.如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key: $ ssh-keygen -t rsa -C "[email protected]" 你需要把邮件地址换成你自己的邮件地址(Git的邮箱地址),然后一路回车,使用默认值即可,由于这个K

2016/01/13开始学习git:分支管理:解决冲突

创建新分支,commit后:切换回master分支,再次commit:Git此时无法快速合并. 可以git status找到冲突的文件readme.txt, 查看并修改,然后再次提交 1.创建新分支feature1,新增readme.txt的内容,然后add和commit git checkout -b feature1修改readme.txt最后一行,改为:Creating a new branch is quick AND simple.git add readme.txt git comm

[官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

[官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&tid=362766&highlight=Easy%2BSysprep [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) [Easy Sysprep]概述:Easy Sy

ios代理设计模式

代理设计模式的作用:     1.A对象监听B对象的一些行为,A成为B的代理     2.B对象想告诉A对象一些事情,A成为B的代理   代理设计模式的总结:     如果你想监听别人的一些行为,那么你就要成为别人的代理     如果你想告诉别人一些事情,那么就让别人成为你的代理         代理设计模式的开发步骤     1.拟一份协议(协议名字的格式:控件名 + Delegate),在协议里面声明一些代理方法(一般代理方法都是@optional)     2.声明一个代理属性:@prop

自学iOS开发小功能之五:代理设计模式以及书写规范

一.基本概念 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 代理设计模式:我们买电饭锅之类的,不会亲自到厂家去买,而是在商超等地方购买,而商超就是厂家的代理 应用场合:1.对象B想监听对象A的行为,让对象B成为对象A的代理   2.对象A

静态代理设计模式(StaticProxy)

静态代理设计模式: 要求:真实角色,代理角色:真实角色和代理角色要实现同一个接口,代理角色要持有真实角色的引用. 在Java中线程的设计就使用了静态代理设计模式,其中自定义线程类实现Runable接口,Thread类也实现了Runalbe接口,在创建子线程的时候,传入了自定义线程类的引用,再通过调用start()方法,调用自定义线程对象的run()方法.实现了线程的并发执行. 1 public class Test2 { 2 3 public static void main(String[]