动态***-通俗易懂篇

前言:编故事理解动态***

很小的时候,小明(调用者)要去找小红同学(真实对象),但小明不能直接找到小红同学,要通过小红的家人(***对象)才能联系到她。
怎么理解这个动态呢?
有一天,小明要去见小红,小明来到小红家门口,出来开门的可能是小红的爸爸或妈妈,甚至可能碰到小红的爷爷奶奶(这个***对象是动态的)。 比如,出来给小明开门的是小红的爸爸,小红爸爸要首先确认小明的身份,才能同意小明上楼找小红。那么确认小明身份这个过程相当于AOP中的前置通知。确认过身份,同意小明上楼找小红了,小明见到了小红,问到了自己想要问的问题。之后,小红的妈妈要留小明在家一起吃午饭,这相当于后置通知


动态***,由两个关键字组成,一是动态,二是***。先来说说***,***涉及到***模式,***的本质就是***模式。

1. ***模式

***模式由三要素,俩动作组成。

三要素:

  1. 接口(定义了服务)
  2. 真实对象(继承接口,提供真正的服务。不能直接访问真实对象,只能通过***对象去访问)
  3. ***对象(包含真实对象,从而操作真实对象)。

俩动作:

  1. 真实对象和***对象要实现共同的接口。
  2. ***对象包含真实对象。

***对象中有静态的,也有动态的。

2.动态***

动态***,***的本质就是***模式,其中的动态我认为指的是不确定生成哪个***对象。

在java中,动态***类包含InvocationHandler(增强器)和Proxy(调度器)

理解InvocationHandler:

为什么要增加器呢,该增强器是***对象对真实对象的增强。比如对真实对象某些方法的前后分别做某些事件以增强真实对象的内容。

举个例子,乘客进入地铁,但进入地铁站前要检查体温,进入地铁站之后要过安检,最后才能进入地铁。

理解Proxy:

当你访问的时候,总会调度一个***对象服务调用者,调度器是专门调度***对象服务调用者的。

在java中,就是通过实现InvocationHandler,重写覆盖invoke方法进行增强业务,该方法中的method.invoke(真实对象,方法参数)就是真实对象的方法调用本身,
而***对象的生成是由Proxy.newProxyInstance()方法。


3. 理解来源

***模式理解图

java的动态***包含Proxy和InvocationHandler

学习来源及链接:
https://www.bilibili.com/video/BV1Dt41187wj?from=search&seid=6290600221112243542

全部评论

相关推荐

object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
牛客154160166号:9月底还给我发短信,好奇怪,我24届的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务