好处
–
那么这样做有什么好处呢?我也可以直接去访问卖家呀?这其实就是涉及到AOP的知识了(Spring内容,面向切片),实现我们基本业务逻辑和其他处理的分离,降低代码的耦合性。同时也能够在基础功能上,不改变源代码的前提下增加新的功能。
代理模式分类
======
一、静态代理
静态代理顾名思义,是静态的代码,也就是我们在编译的时候就已经确定了的,这样虽然能够实现我们代理模式,但是失去代码的灵活性,不能满足我们动态编程的需求。下面来看代码。
定义静态代理模式的步骤
一、创建一个代理接口,也就是被代理方所需要实现的最基本的功能。
interface Object1{
void action();
}
复制代码
二、创建一个被代理类,实现代理接口,重写接口中的方法。
//被代理类
class ObjectImpl implements Object1{
@Override
public void action() {
System.out.println(“=被代理类开始执行==”);
System.out.println(“具体操作====”);
System.out.println(“被代理类执行完毕====”);
}
}
复制代码
三、创建一个对应的代理类,同样实现代理接口,重写接口中的方法,在类中定义一个Object类,用来获取到被代理类的对象,然后执行被代理对象的方法
+自己另外的功能方法
…
//代理类
class ProxyObject implements Object1{
Object1 obj;
public ProxyObject() {
System.out.println(“代理类创建成功”);
obj = new ObjectImpl();
}
@Override
public void action() {
System.out.println(“代理类开始执行”);
obj.action();
}
}
复制代码
其实这时候我们也发现一个问题,那就是代码很不灵活
,我们需要在编译前就想好哪写类需要用到代理模式并且给它们写好对应的代理类
,这样未免也太麻烦了! 那么这时候基于反射原理
的动态代理
就有用武之地!
二、动态代理
前面说到,动态代理基于的是java反射原理,那么具体怎么用到的呢? 其实就是我们在原来被代理类和代理类一对一
的关系把它简化成了被代理类和代理类多对一
的关系,我们只需要创建一个动态代理类,实现InvocationHandler接口,然后通过动态获取传入的被代理的对象,并动态执行被代理对象
的方法。这样听起来好像有点绕,那么我们根据代码来具体看一看:
定义动态代理模式的步骤
一、创建代理接口,也就是被代理方所需要实现的最基本的功能(这里为了体现动态代理的功能所以定义了两个不同的代理)
//动态代理的接口1
interface Subject{
void action();
}
//动态代理的接口2
interface ClothFactory{
void test();
}
复制代码
二、创建被代理类,实现代理接口,重写接口中的方法。
//被代理类1
class RealSubject implements Subject{
@Override
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以扫码领取!
![img](https://i-blog.csdnimg.cn/blog_migrate/488cbcd7998816f9407037a0f4251eee.jpeg)
总结
就写到这了,也算是给这段时间的面试做一个总结,查漏补缺,祝自己好运吧,也希望正在求职或者打算跳槽的 程序员看到这个文章能有一点点帮助或收获,我就心满意足了。多思考,多问为什么。希望小伙伴们早点收到满意的offer! 越努力越幸运!
金九银十已经过了,就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。我偶然得到一份整理的资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。
复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。我偶然得到一份整理的资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。**
[外链图片转存中…(img-CCXOk1fR-1711370697064)]
需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!