静态代理 与 Thread对比
静态代理时线程底部的实现原理
静态代理模型总结
( 1 ) 真实对象和代理对象都要实现同一个接口
( 2 ) 代理对象要代理真实角
静态代理好处
(1)代理对象可以做很多真实对象做不了的事情
(2)真实对象专注与自己的事情
案例代码:
package com.heima.Multithreading;
//
public class StaticProxy {
public static void main(String[] args) {
// You you = new You();//真实对象,你
// WeddingCompany weddingCompany = new WeddingCompany(you);//代理对象weddingCompany
// weddingCompany.HappyMarry();
//写成一行
new WeddingCompany(new You()).HappyMarry();
//new Thread.(一个实现Runnable接口的类).start;
//Thread其实本质上也是Runnable接口的一个实现类,本质上也是代理
}
}
interface Marry{
void HappyMarry();
}
//真实角色
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("宏哥结婚了");
}
}
//代理角色,帮助真实角色
class WeddingCompany implements Marry{
private Marry target; //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("婚前帮忙");
}
}
核心逻辑:
public class StaticProxy {
public static void main(String[] args) {
// You you = new You();//真实对象,你
// WeddingCompany weddingCompany = new WeddingCompany(you);//代理对象weddingCompany
// weddingCompany.HappyMarry();
//写成一行
new WeddingCompany(new You()).HappyMarry();
//new Thread.(一个实现Runnable接口的类).start;
//Thread其实本质上也是Runnable接口的一个实现类,本质上也是代理
}
}