跳到主要內容

設計模式-Proxy(代理模式)

代理模式也稱委託模式,日常事務很多代理模式,例如幫別人跑腿買東西,代理售票等等。在設計模式為其他物件服務某件功能。

代理模式定義

為物件提供代理服務

代理模式作用

  1. 想要託管物件行為
  2. 可以在該物件之前或之後,進行額外的動作

代理模式範例

本範例當我有一個網站服務WebService實作IService介面,網站服務利用WebProxy託管,當他託管時,可以在執行服務前後加上其他動作

    /**
     * Name: IService.java
     * Description :  託管介面
     * Created by bryant on 2017/1/20.
     */
    public interface IService {
        //執行動作
        public  void doAction();
    }
    /**
     * Name: WebService.java
     * Description :  網站託管
     * Created by bryant on 2017/1/20.
     */
    public class WebService implements IService {

        @Override
        public void doAction() {
             System.out.println("進行託管");
        }
    }

    /**
     * Name: WebProxy.java
     * Description :  代理模式
     * Created by bryant on 2017/1/20.
     */
    public class WebProxy  {
        private IService service  ;
        public WebProxy(IService service){
            this.service = service ;
        }

        public void action(){
            //執行服務前條件
            System.out.println("託管前設定");

            this.service.doAction();
            //其他條件
            System.out.println("本次託管費用");
        }
    }
    /**
     * Name: IService.java
     * Description :  代理模式測試
     * Created by bryant on 2017/1/20.
     */
    public class WebProxyDemo {

        public  static void main(String[] args){
            IService webService = new WebService();
            WebProxy proxy = new WebProxy(webService);
            proxy.action();
        }
    }

結果: 託管前設定
進行託管
本次託管費用

留言