简单理解代理模式

必备元素:一个接口,两个类(代理类和被代理类)。被代理类可以理解为业务类。

使用场景:现在需要添加新的业务,而业务类A现有的功能无法满,又不想改动A(可能是改动代价太大等原因),那么需要一个代理类B去帮A做。

如何使用:代理类B需要持有被代理类A的引用,为什么需要一个接口呢?因为A和B都需要实现这个接口,这样他们才会有共同的方法。

举例(伪代码)

接口

interface Student {

public void study();

}

学生A学习高数

Class StudentA implement Student {

public void study(){

学习高数;

}

}

新的需求:学生A需要学习英语~

代理类

Class ProxyA implement Student {

StudentA studentA;

public void study(){

studentA.study();

学习英语;

}

}

使用Client

Student student = new StudentA();

student.study();

是不是很简单~

时间: 2024-12-09 14:58:14

简单理解代理模式的相关文章

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

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

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

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

Java的设计模式 之 简单的代理模式

下面是简单的代码外加一些个人的理解 此代码实现的目的:在已有的输出结果的之前和结束的位置上输出其他的信息.如下述的输出: //正常的输出结果: System.out.println("run ......"); //要实现的样式: xxxxxxxxx; //(其中xxxx表示的是为任意的输出) System.out.println("run ......."); xxxxxxxxx; //(其中xxxx同正常输出之前的输出) 要像实现上述的方法有两种办法: 方法一:

DRP总结—在实践中理解代理模式

前言 在JDBC访问数据库时,增删改的方法可谓都要进行手动事务处理,所以在每一个方法执行的时候,就都要写事务处理的代码.当敲起代码来不舒服的时候,我们就要想想面向对象的思想,这么多次重复写相同的代码是不对的,所以就要进行抽象和封装,于是就有了设计模式. 代理模式 代理模式(Proxy):为其他对象提供一种代理,以控制对这个对象的访问.举一个生活中的例子,如果我们买什么东西,我们并不会去工厂直接购买,而是去商场进行选购,这时的商场也就是工厂的代理类.在类的单一职责原则中,一个类应该只做一件事,所以

深入理解【代理模式】原理与技术

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问. 23种常用的面向对象软件的设计模式之一. 代理模式分为静态代理.动态代理. 如何理解代理模式? 思考抽象问题最好的办法就是具体化! 比如我们需要为一个业务方法在执行前后记录日志,为了达到解耦的目的,我们可以再新建一个类并定义一个新的业务方法,该方法既可以调用原业务方法,又可以在调用前后进行日志处理,例如: CarProxy.class public void move() { System.out.println("日志开始记录..

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag

iOS开发-代理模式

代理模式有的时候也被称之为委托模式,但是实际上两者是有分别的,代理模式为另一个对象提供一个替身或占位符访问这个对象,代理对象和控制访问对象属于同一类,委托对象和对象不一定属于同一类.两者都可以控制类的访问,访问代理的方法A也就意味着访问对象的方法A,访问委托对象方法A执行的是可以是对象的方法B.从实际开发的角度看,委托属于代理模式的扩大版,并没有那么多的限制. 基础知识 代理模式相对比较简单,可以简单的看一下UML类图: 代理模式以便管理客户对对象的访问,管理访问的方式有很多种.远程代理管理客户

设计模式C++学习笔记之二(Proxy代理模式)

代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢.cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com.现在贴代码,以方便随用随取. 2.1.解释 main(),西门庆 IKindWomen,接口 CWangPo,代理 CPanJinLian,实际执行者之一 CJiaShi,实际执行者之二 说明:代理和实际执行者派生于共同的接口,代理拥有实际执行者的实例.代理的每一个函数(接口的实现函数),直接调用实际执行者的

java设计模式之代理模式模式总结

定义:代理模式这种设计模式是一种使用代理对象来执行目标对象的方法并在代理对象中增强目标对象方法的一种设计模式. 解读定义: 1.代理对象和目标对象有共同的接口: 2.使用代理对象执行目标对象中的方法: 3.在代理对象中增强目标对象方法. 设计模式原则:开闭原则(对扩展开放,对修改关闭).一种好的设计模式甚至是架构,都是在不修改原有形态的基础上扩展出新的功能. 下面从代码角度理解代理模式: 要素:帅哥.美女.媒婆,那么美女害羞不好意思说话,这个时候媒婆就充当代理对象的身份.美女就是目标对象,并且还