IT干货网

静态代理

luoye 2022年03月12日 编程设计 159 0

静态代理

你要去做一件事,可以把这件事交给别人去做,而且别人除了做这件事还会帮你顺手做别的事。就比如结婚,结婚包括婚礼准备、结婚本身、和打扫会场,你可以把这些事交给婚庆公司去做,婚庆公司就像静态代理,除了结婚,它还会帮你准备婚礼和打扫会场。

以下代码用结婚的例子模拟静态代理:

package com.cxf.multithread.stagent; 
 
public class TestForStaticAgent { 
    public static void main(String[] args) { 
        Someone cxf = new Someone(); 
 
        Agent agent = new Agent(cxf); 
        agent.doMarry(); 
    } 
} 
 
interface Marry{ 
    void doMarry(); 
} 
 
class Someone implements Marry{ 
    @Override 
    public void doMarry() { 
        System.out.println("get married"); 
    } 
} 
 
class Agent implements Marry{ 
    private Marry client; 
    public Agent(Marry client) { 
        this.client = client; 
    } 
    private void Prepare(){ 
        System.out.println("prepare for the wedding"); 
    } 
    private void Clean(){ 
        System.out.println("clean the hall"); 
    } 
    public void doMarry() { 
        Prepare(); 
        this.client.doMarry(); 
        Clean(); 
    } 
} 
 

输出结果:

prepare for the wedding 
get married 
clean the hall 

这段代码核心在于,agent执行doMarry时,会执行someone的doMarry和其他事情。agent和someone共同的父接口都有doMarry方法,两者分别重写了它。

Runnable接口也是这个道理。Thread和要做的事情类都继承了Runnable接口,Thread作为代理,执行start时,会执行要做的事情类的run方法和其他事情。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

用Callable创建线程