Java多线程-静态代理
2023-09-11 14:22:31 时间
什么是代理?
简单来说:代理(我帮你做一些事情)
例子
我结婚,我是一个真实的对象,婚庆公司帮我拍摄布置等,帮我代理(代理我),我和婚庆公司都去实现结婚接口即可,我只需要做我的是,其他事情婚庆公司(代理)帮我做即可
package com.wyh.thread;
/**
* @program: Thread
* @description: 静态代理
* @author: 魏一鹤
* @createDate: 2021-12-29 21:48
**/
//静态代理模式总结
//1 真实对象和代理对象都要实现同一个接口
//2 代理对象要代理真实的角色
//好处
// 1 代理对象可以做很多真实对象做不了的事情
// 2 真实对象只需要专注做自己的事情,其他的事情交给代理对象
public class StaticProxy {
public static void main(String[] args){
//传统写法
//You you = new You();
//you.happyMarry();
//创建代理对象 需要一个真实的对象参数
// WeddingCompany weddingCompany=new WeddingCompany(new You());
//代理对象去调用结婚方法 还可以进行其他的操作
// weddingCompany.happyMarry();
//开启多线程
new Thread(()-> System.out.println("我爱你")).start();
//简化代码
new WeddingCompany(new You()).happyMarry();
}
}
//结婚接口
interface Marry{
//人生四大喜事
//久旱逢甘露
//他乡遇故知
//洞房花烛夜
//金榜题名时
void happyMarry();
}
//我实现结婚接口 我是真实的角色 我去结婚
class You implements Marry {
@Override
public void happyMarry() {
System.out.println("我要结婚了,好开心!");
}
}
//婚庆公司也实现结婚接口 它是一个代理角色 帮助我结婚
class WeddingCompany implements Marry {
//代理谁-->真实目标角色
private Marry target;
//构造方法 把我们的真实角色进行传参
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void happyMarry() {
//结婚之前的方法
before();
//这就是调用真实对象了
this.target.happyMarry();
//结婚之后的方法
after();
}
private void after() {
System.out.println("结婚之后");
}
private void before() {
System.out.println("结婚之前");
}
}
静态代理的特点
1 真实对象和代理对象都要实现同一个接口
2 代理对象要代理真实的角色
静态代理的好处
1 代理对象可以做很多真实对象做不了的事情
2 真实对象只需要专注做自己的事情,其他的事情交给代理对象
相关文章
- Java入门系列之集合Hashtable源码分析
- 35 个 Java 代码性能优化总结
- JAVA多线程和并发基础面试问答
- 《Java和Android开发学习指南(第2版)》——第1章,第1.5节本章小结
- 《21天学通Java(第6版)》—— 2.5 表达式和运算符
- (Java实习生)每日10道面试题打卡——Java多线程篇 (二)
- Eclipse部署多个Web项目内存溢出,java.lang.OutOfMemoryError: PermGen space
- 构建高性能服务 Java高性能缓冲设计 vs Disruptor vs LinkedBlockingQueue
- Java学习-082-多线程15:线程中断退出
- java vector的多线程安全是否有用
- java多线程学习
- Java_解决java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
- 分析轮子(八)- List.java 各种遍历方式及遍历时移除元素的方法
- 浅析Java对集合进行操作时报java.util.ConcurrentModificationException并发修改异常问题:产生原因、单线程/多线程环境解决、CopyOnWriteArrayList线程安全的ArrayList、fail-fast快速失败机制防止多线程修改集合造成并发问题
- Java之Comparator使用举例
- 『Java练习生的自我修养』java-se进阶⁵ • 常用IO流
- Java程序员面试中的多线程问题
- 【JAVA基础】不同的jar拥有相同全限定类名和不同的方法Method时NoSuchMethodError,同名类加载问题 / 双亲委派
- JAVA封装 构造方法,this,static,重载
- 什么是Java序列化,如何实现java序列化
- 【Java笔记】配置文件java.util.Properties类的使用
- Java多线程问题总结(上)
- Java 乐观锁和悲观锁