设计代理模式理解

通常情况下,一个类引用了另一个类时,都会有一个相关联待属性,比如person类中有一个student类型的属性,这样使用导致代码的耦合性

太高,一旦我不想使用student作为该属性的类型时,即这个类型是个代理类,修改起代码十分的麻烦,

所有我们就直接将这个属性定义成id类型的(NSObject *),可以是任意类型,但是此时当类型实质是没有明确的的,那么就会导致我们无法

使用该属性,

所有我们又让这个id类型去遵守某个协议,那么这样我们就知道这个id类型的实质是要干啥,也就是我们能够清楚知道这个类型下可以调用哪些

方法,

同时在给该属性赋值的时候,这个值对象也是必须遵守了这个协议的

换句话说:找个人替我办事,这个人可以是任何人,但是这个人必须得遵守我们之间的协议

时间: 2024-10-16 21:16:29

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

GOF23代理模式之静态代理模式理解之经典

 设计模式之代理模式之静态代理模式      代理模式(Proxy pattern)          核心作用:               通过代理,控制对对象的访问.                    可以通过详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理.(即AOP的微观实现)               AOP(面向切面编程.Aspect Oriented Programming)的核心实现的机制          举个例子来理解这种模

深入剖析代理模式

代理模式理解 为其他对象提供一种代理以控制这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度. 为什么需要代理? 因为一个良好的设计不应该轻易的修改.这正是开闭原则的体现:一个良好的设计应该对修改关闭,对扩展开放.而代理正是为了扩展类而存在的.他可以控制对现有类(需要被代理的类)服务的访问,通俗的解释就是可以拦截对于现有方法的调用并做些处理. 在软件设计中,使

菜鸟版JAVA设计模式—从买房子看代理模式

今天学习了代理模式. 相对于适配器模式,或者说装饰器模式,代理模式理解起来更加简单. 代理这个词应该比较好理解,代替去做就是代理. 比如,我们买卖房子,那么我们会找中介,我要卖房子,但是我们没有时间去卖,我主动交给中介,中介会帮我发布,会帮我找买家,带买家看房,最后我只要收到钱就行了. 买家的目的:卖房拿钱..卖加最终的目的就是把房子换成钱. 中介的工作:收集房产信息,发布房产信息,等买家打电话来,带买家看房,买家看中了,付钱给中介,中介办理过户手续,过户成功,抽掉自己的佣金,付钱给卖家. 卖家

深刻理解代理模式在java中如何优化系统性能

最近参与实习公司的项目迭代,项目中需要实现系统的快速响应和大量数据处理.在不断的学习中获得一点儿心得,先记录下来.慢慢的修改! 关于代理模式的知识和简单应用之前的学习笔记中已经有记录了,可以复习一下.这里主要记录如何使用代理模式来实现延迟加载,进而提升系统系能和反应速度. 使用代理模式实现延迟加载的一个简单实例: 需求:项目中对系统的启动速度做了一定的要求 我们在系统首次加载时,因为不需要实际的数据来构造显示界面,这就为我们实现系统首次加载的快速响应提供了可能.在常规模式下,我们一般会在系统启动

四(2)、复用类补充之关于代理模式的一点理解

一.关于代理模式的几个概念 1.比如A要去租房,通过中介B,租到C家的房子,这里B就是A的代理. 代理可以认为是之前介绍的组合和继承的折中模式,它有继承的部分也有组合的部分. 2.代理的结构 1)抽象主题角色: 声明了真实主题和代理主题的共同的接口. 2)代理主题角色:内部含有真实主题的引用, 从而可以再任何时候操作真实主体对象:提供了一个与真实主题相同的接口,以便可以替代真实主题. 3)真实主题角色:抽象主题的实现,是具体被代理的对象. 二.三种常见的代理模式 1.普通代理模式 1 packa

Objective-C:模拟按钮点击事件理解代理模式

OC中的协议(Protocol)和和.NET中的接口(Interface)类似,简单来讲,就是一系列方法的列表,其中声明的方法可以被任何类实现.不同的是,在.NET中,如果某个类实现了一个接口,就必须实现这个接口中声明的所有方法:但在OC中,可以不实现协议中声明的所有方法,需要用到某些功能,就去实现对应的方法即可. 这种模式一般称为代理模式.在iOS和OS X开发中,Apple采用了大量的代理模式来实现MVC中View(UI控件)和Controller(控制器)的解耦. 监听思想:如果想让某个对

深入理解JavaScript系列(31):设计模式之代理模式

介绍 代理,顾名思义就是帮助别人做事,GoF对代理模式的定义如下: 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 代理模式使得代理对象控制具体对象的引用.代理几乎可以是任何对象:文件,资源,内存中的对象,或者是一些难以复制的东西. 正文 我们来举一个简单的例子,假如dudu要送酸奶小妹玫瑰花,却不知道她的联系方式或者不好意思,想委托大叔去送这些玫瑰,那大叔就是个代理(其实挺好的,可以扣几朵给媳妇),那我们如何来做呢? // 先声明美女对象 var girl = func

代理模式(静态代理)的通俗理解

代理模式分为两种:静态代理和动态代理. 首先不谈模式,举一个例子: 有一队很美丽的妹子,她们都是训练有素的迎宾小姐.平时忙于训练再加上人脉与广告投入不多,生意并不好.于是她们的老大提议去找一个礼仪公司合作,请他们把迎宾的活儿包给她们来做.恰好在某个公司有个接待外宾的活动,该活动交给一个这个知名的礼仪公司负责,礼仪公司就通知了迎宾小姐.在外宾下车时就要乐队奏乐,走到公司门口时,迎宾小姐需要致以问候.现在来模拟一下这个情景. //相当于迎宾小姐(委托类) public class HelloWorl

webgame设计之功能模块的代理模式

原文地址:http://chengduyi.com/blog/?post=27 在游戏设计中,通常会将一些实现了具体功能的模块进行封装,达到重用的目的.这些功能模块包括:1.网络通信模块(实现连接,断开,消息发送.接收,错误等处理):2.资源加载管理模块(实现资源加载,缓存,进度通知,分类型加载.管理等). 设计实现这些功能模块的方法很多,设计过程中最好做到使这些模块在外部启动简单.使用方便.重用容易. 我在设计中使用了代理模式的思想,就是将封装的功能留出一个代理类供外部继承实现.使用时候的具体