Java静态代理
Posted Moon&&Dragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java静态代理相关的知识,希望对你有一定的参考价值。
Java静态代理
1 概念
代理的意思,顾名思义就是让别人去帮忙做一些事情,在现实生活中也是处处都存在的代理。比如租房找的中介,买东西找的代购等等。在java的世界,代理也是同样的意思,一个类的方法执行后只用一个功能,那么我想去让功能更强大,或者增加其他功能的时候,这时候考虑到单一原则,而且尽量不去修改原代码,我们就会使用代理类。
代理类就是在帮助我们实现原有的方法的时候,可以用额外的扩增其他的功能。
什么是静态代理:
静态代理就是指我们在给一个类扩展功能的时候,我们需要去书写一个静态的类,相当于在之前的类上套了一层,这样我们就可以在不改变之前的类的前提下去对原有功能进行扩展。
静态代理的缺点:
因为静态代理是需要我们书写一个代理类,对原有的类的功能进行增强,但是一个类比较好些,如果在工作中有大量的类需要我们去代理,那么使用静态代理的方式,就会让我们的代码量大大增加。
2 java中的静态代理
2.1 前期准备(entity)
结婚方法的接口
public interface Marry {
/**
* 结婚方法
*/
void marry();
}
人类接口
public interface Person extends Marry{
/**
* 说话方法
*/
void talk();
}
男人类
public class Man implements Person{
/**
* 姓名
*/
private String name;
public void setName(String name) {
this.name = name;
}
/**
* 重写结婚方法
*/
@Override
public void marry() {
System.out.println(name+"在结婚");
}
/**
* 重写说话方法
*/
@Override
public void talk() {
System.out.println(name+"在说话");
}
}
2.2 代理类
针对结婚写的静态代理类
/**
* @author 晓龙
* @version 1.8.271
* @ProtectName ProxyDemo
* @ClassName MarryProxy
* @Description 结婚代理
* @createTime 2021年05月23日 12:44:00
*/
public class MarryProxy implements Marry {
// 代理对象
private Person person;
public void setPerson(Person person) {
this.person = person;
}
// 代理结婚
@Override
public void marry() {
// 结婚前准备
beforeMarry();
// 结婚
person.marry();
// 结婚后
afterMarry();
}
private void beforeMarry(){
System.out.println("结婚前准备");
}
private void afterMarry(){
System.out.println("结婚后准备");
}
}
2.3 测试类
/**
* @author 晓龙
* @version 1.8.271
* @ProtectName ProxyDemo
* @ClassName Test
* @Description 测试类
* @createTime 2021年05月23日 12:42:00
*/
public class Test {
public static void main(String[] args) {
// 实例一个正常的man
Man man = new Man();
man.setName("peter");
// man结婚
man.marry();
System.out.println("=========分割线============");
// 实例代理类--->中介公司
MarryProxy marryProxy = new MarryProxy();
// 设置代理对象
marryProxy.setPerson(man);
// 结婚代理
marryProxy.marry();
}
}
结果
以上是关于Java静态代理的主要内容,如果未能解决你的问题,请参考以下文章