java設計模式--靜態代理
阿新 • • 發佈:2019-02-06
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(); } }
總結:靜態代理可以通過實現通用介面的不同實現類,來完成相關代理,但是不是相同的通用介面則無效;需要實現很多個介面和代理類,導致代理介面和實現類龐大,不便維護。推薦使用動態代理。