1、定義通用介面
/** * 定义通用接口 * @author Administrator * @date 2018/7/22 */ public interface IBusiness { /** * 接口执行方法 */ void execute(); }
2、定義真實操作實作類別
/** * 真实操作实现类 * @author Administrator * @date 2018/7/22 */ public class BusinessImpl implements IBusiness{ @Override public void execute() { System.out.println("真正执行操作......"); } }
3、靜態代理操作
/** * 静态代理 * @author Administrator * @date 2018/7/22 */ public class ProxyBusiness implements IBusiness{ /** * 定义需要执行的接口 */ private IBusiness business; /** * 通过set方法传参,真实需要执行的对象 */ public void setBusiness(IBusiness business) { this.business = business; } /** * 代理对象执行操作 */ @Override public void execute() { if(business == null){ System.out.println("实际操作对象为null"); return; } before(); business.execute(); after(); } /** * 执行操作前 */ public void before(){ System.out.println("执行操作前......"); } /** * 执行操作后 */ public void after(){ System.out.println("执行操作后......"); } /** * 测试 */ public static void main(String[] args) { ProxyBusiness proxyBusiness = new ProxyBusiness(); BusinessImpl business = new BusinessImpl(); proxyBusiness.setBusiness(business); proxyBusiness.execute(); } }
總結:靜態代理可以透過實作通用介面的不同實作類,來完成相關代理,但是不是相同的通用介面則無效;需要實作很多介面和代理類,導致代理介面和實作類龐大,不便維護。建議使用動態代理。
以上是深入淺出java設計模式--靜態代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!