victory的博客

长安一片月,万户捣衣声

0%

Java | 静态代理

静态代理案例

通过静态代理来帮助发短信(短信发送类和代理类实现相同的接口)
SmsService.java(接口)

package proxy;

public interface SmsService {
    String send(String message);
}

SmsServiceImpl.java(实现类)

package proxy;

public class SmsServiceImpl implements SmsService{

    @Override
    public String send(String message) {
        System.out.println("send message:" + message);
        return message;
    }

}

SmsProxy.java(代理类)

package proxy;

public class SmsProxy implements SmsService{
    private final SmsService smsService;
    
    public SmsProxy(SmsService smsService){
        this.smsService = smsService;
    }
    
    @Override
    public String send(String message) {
        System.out.println("before method send()");
        smsService.send(message);
        System.out.println("after method send()");
        return null;
    }
}

Main.java(测试类)

package proxy;

public class Main {
    public static void main(String[] args){
        SmsService smsService = new SmsServiceImpl();
        SmsProxy smsProxy = new SmsProxy(smsService);
        smsProxy.send("java");
    }
}

运行结果