版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,设计模式、目标,掌握静态代理和动态代理的目标、实现方法和实现步骤,掌握观察者模式的目标和实现方法。理解观察者模式中包含的面向对象的设计原则。代理模式-结构模式,代理模式:为其他对象提供代理来控制对该对象的访问。为什么使用代理模式?隐藏与业务无关的操作或访问。通过引入间接性,可以动态地添加一些行为。这些附加操作通常用于真实对象的状态控制、访问控制和生命周期管理。代理模式,代理模式结构图,代理模式结构模式,以及在什么情况下应该使用代理模式?1)虚拟代理。如果一个对象(如图片)需要很长时间才能加载,可以通过代理在后台加载。2)远程代理,用于为远程机器提供本地对象以实现远程调用。客户端不能直接调用代
2、理指定的对象,例如,位于不同主机上的类不能直接调用,所以需要建立一个代理类,通过代理调用实际的对象;3)智能引用,它在访问对象时执行一些附加操作。它的典型用途包括:计算指向实际对象的引用,这样当对象没有引用时,它可以被自动释放(例如,从缓存中移除)。当第一次访问实际对象时,它会从持久层或缓存加载到内存中。在访问实际对象之前,请检查它是否已被锁定,以确保其他对象无法更改它。在访问实际对象之前,请检查您是否拥有相应的权限。代理模式体现的设计原则有效地屏蔽了客户端的附加行为细节,降低了客户端与系统之间的耦合度。代理模式体现的面向对象设计原则:1)李希特替换原则是代理模式的基础;2)代理模式体现了里希
3、特替换原则和开放封闭原则;3)多用途组合,少用途继承。代理模式中涉及的角色有:1) ReadSubject:客户端实际需要操作的对象。2)代理:代理包含对真实主题的引用,并且可以对真实主题进行操作。3)抽象主体:定义了真实主体和代理人联合操作的接口,使得代理人可以在真实主体可以操作的任何地方进行操作。代理模式,首先定义一个接口,在接口中定义一些业务方法,以及客户需要实现的真实对象和代理对象,这个接口公共接口代理接口公共void函数();代理模式,它定义了客户需要的真实对象并实现了代理接口公共类代理类实现了代理接口公共代理类()公共void函数()系统。out.println(在代理类中);在代
4、理模式下,客户不能直接得到自己想要的对象,而是需要经过中介机构,即代理设计模式下的代理对象与之前的真实对象相同,用户在调用时不会感觉到代理的存在。代理主题扮演传递请求的角色;代理使用委托机制将客户端的调用委托给真实的主体对象,代理模式,公共类代理实现代理接口私有代理类代理类;/代理类持有对主体对象的引用,公共代理(代理类代理类)这个。代理类=代理类;在()之前为公共void函数();在()之前为公共void函数();如果(ProxCLASS=null)ProxCLASS=新的ProxCLASS();procycloass . function();在()之后;公共void after(),动态
5、代理-动态生成代理对象,无需手动编写代理类;而是在运行时动态生成;该函数与手动生成的代理对象一致。实现相同的接口:创建Java . lang . reflect . InvocationHandler。每个代理实例都有一个对应的invocationhandler实例,这是一个方法拦截器。用于控制对对象访问的拦截。创建动态代理对象的步骤:指定一系列接口来创建一个代理对象,创建一个调用处理器调用处理程序对象,将这个代理指定为某个其他对象的代理对象,并在调用处理器的invoke()方法中获取代理,一方面将调用传递给真实对象,另一方面执行需要完成的各种操作。代理模式智能引用,Java虚拟机的内存管理能
6、力有限,但出于效率原因,一些应用程序需要将一些大型对象加载到内存中。为了保证虚拟机不会溢出内存,采用了软引用,当内存不足时,虚拟机可以回收大对象。使用智能引用可以确保大型对象一旦被回收,就可以重新创建,以确保客户端的正常使用。观察者模式-行为模式,也称为“发布和订阅”模式。定义了一对多依赖关系,允许多个观察者对象同时监视一个主体对象。当主体对象改变状态时,它会通知所有的观察者对象,这样他们就可以自动更新自己。何时使用:当一个对象的变化需要同时通知给其他对象,并且不知道需要通知多少对象时,需要通知的对象可以动态增加。为什么使用观察者模式?交互对象之间的松散耦合设计使得观察者和主题之间松散耦合。观
7、察者模式-行为模式,观察者模式的构成:观察者模式的静态结构包含一些角色:1)抽象主体角色主体: 2)抽象观察者角色观察者3)具体主体4)具体观察者角色,观察者模式-行为模式,如何使用观察者模式:如果网上商店的商品名称和价格发生变化,如果系统能够自动通知会员并向会员发送电子邮件,区分传统商店将是网上商店的一大特色。这需要在产品中添加观察者的角色,以便当产品的细节发生变化时,观察者可以自动观察到这种变化,并可以及时更新或通知。观察者模式行为模式,定义主题类公共类产品扩展可观察的私有字符串名称;私人浮动价格;公共字符串getName()返回名称;公共无效集名称(字符串名称)。名称=名称;/设置更改点
8、set Changed();notifyObservers(名称);公共浮动getPrice()返回价格;公共无效设定价格(浮动价格)此.价格=价格;/设置更改点set Changed();通知观察者(新的浮动(价格);/下面可以是数据库更新插入命令。公共void saveToDb().观察者模式行为模式,公共类名观察者实现观察者私有字符串名称=null如果(字符串的参数实例)名称=(字符串)参数,则公共无效更新(可观察对象,对象参数);/产品名称变更的值是系统。out . println(name observer : name change to name)in name;/公共类Pric
9、eObserver实现了观察者私有浮动价格=0,主要由观察者价格观察者用来观察产品价格;如果(浮点的参数实例)价格=(浮点)参数),则公共无效更新(可观察对象,对象参数)。浮点值();system . out . println(price observer : price changet to price);观察者模式行为模式,公共类测试公共静态void main(字符串args)product product=new product();名称观察者名称OBS=新名称观察者();PriceObserver priceobs=新价格观察者();/加入观察者产品. AddBuserver(nam
10、e OBS);product . AddBserver(price OBS);产品.集合名称(橙色为红色);产品.设定价格(9.22 f);/名称观察者:名称变更为橙色价格观察者:价格变更为9.22,观察者模式-行为模式,观察者模式所体现的设计原则:找出程序中将要变更的部分,然后将它们从固定的方面中分离出来。为接口编程,而不是为实现编程。使用组合多于继承。在观察者模式下,将会改变的是主题的状态,以及观察者的数量和类型。使用此模式,您可以更改依赖于主题状态的对象,而无需更改主题。主题和观察者都使用接口:观察者使用话题界面注册话题;该主题通过观察者界面通知观察者。这样,它们可以正常运行,同时具有松耦合的特点。观察者模式通过组合将许多观察者组合成一个主题。对象之间的这种关系不是通过继承创建
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夹心保温墙施工准备与材料进场方案
- 矮化苹果树夏季修剪作业方案
- 猪场常态化消毒程序与效果评价方案
- 粉尘防爆安全培训方案
- 精准水产养殖水质在线调控方案
- 数据安全企业合规管理与风险防控方案指南
- 业务员白酒销售合同
- 小型医疗设备销售合同
- 小型洗煤机销售合同
- 文玩艺术品代理销售合同
- 模版-2026年2月市场销售经营分析月报看板
- 2026年供热知识试题题库及答案
- 高考化学主观题重点突破策略
- 试件留置方案和试验计划
- T∕HNCJ 0003-2026 城镇供水管网分区计量漏损控制技术标准
- 生产计划与调度工具产能需求预测版
- 【小学】【纪律主题】班会:-碎嘴子的代价【课件】
- GB/T 19861-2026丙烯酸系阴离子交换树脂交换容量测定方法
- 计算机新技术简介
- 雨课堂学堂在线学堂云《The intangible cultural heritage textile - let the world understand the beauty of China(天津工业)》单元测试考核答案
- 2026年及未来5年中国MMA行业市场全景分析及投资战略规划报告
评论
0/150
提交评论