【多線程】Thread靜態代理模式理解
Thread靜態代理模式理解
代碼示例:
/**
* @Description 靜態代理模式
* @Author hzx
* @Date 2022-03-26
*/
public class StaticProxy {
public static void main(String[] args) {
You you = new You(); //你要結婚
WeddingCompany weddingCompany = new WeddingCompany(you); //代理對象,幫助你完成婚禮
weddingCompany.HappMarry();
//以下代碼用于對比: Thread實現和靜態代理
Runnable runnable = new Runnable() { //定義一個Runnable對象
@Override
public void run() {
System.out.println("【Runnable】 i love you");
}
};
Thread thread = new Thread(runnable); //代理對象
thread.start();
}
}
interface Marry {
void HappMarry();
}
/**
* 真實角色,你去結婚
*/
class You implements Marry {
@Override
public void HappMarry() {
System.out.println("【真實角色】舉行婚禮儀式,超開心");
}
}
/**
* 代理角色,幫助你完成婚禮
*/
class WeddingCompany implements Marry {
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void HappMarry() {
before();
this.target.HappMarry();
after();
}
private void before() {
System.out.println("【代理角色】結婚之前,布置婚禮現場");
}
private void after() {
System.out.println("【代理角色】結婚之后,打掃婚禮現場");
}
}
執行結果:
【代理角色】結婚之前,布置婚禮現場
【真實角色】舉行婚禮儀式,超開心
【代理角色】結婚之后,打掃婚禮現場
【Runnable】 i love you
靜態代理模式總結:
- 1.真實對象和代理對象都要實現同一個接口;
- 2.代理對象要代理真實角色。
好處:
- 1.代理對象可以做很多真實對象做不了的事情;
- 2.真實對象專注做自己的事情。

浙公網安備 33010602011771號