zoukankan      html  css  js  c++  java
  • 代理模式之静态代理

      一、概述

      代理是一种模式,提供了对目标对象的间接访问方式,即通过代理访问目标对象。如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象功能的特点也为多人所用。

      二、图形描述

      

      

     三、静态代理

      静态代理的实现比较简单,代理类通过实现与目标对象相同的接口,并在类中维护一个代理对象。通过构造器塞入目标对象,赋值给代理对象,进而执行代理对象实现的接口方法,并实现前拦截,后拦截等所需的业务功能。

    /**
     * 目标对象实现的接口
     * @author aaron
     */
    public interface BussinessInterface {
     
        void execute();
    }
     
    /**
     * 目标对象实现类
     * @author aaron
     */
    public class Bussiness implements BussinessInterface{
     
        @Override
        public void execute() {
            System.out.println("执行业务逻辑...");
        }
    }
     
    /**
     * 代理类,通过实现与目标对象相同的接口
     * 并维护一个代理对象,通过构造器传入实际目标对象并赋值
     * 执行代理对象实现的接口方法,实现对目标对象实现的干预
     * @author aaron
     */
    public class BussinessProxy implements BussinessInterface{
         
        private BussinessInterface bussinessImpl;
         
        public BussinessProxy(BussinessInterface bussinessImpl) {
            this.bussinessImpl = bussinessImpl;
        }
         
        @Override
        public void execute() {
            System.out.println("前拦截...");
            bussinessImpl.execute();
            System.out.println("后拦截...");
        }
    }

    静态代理的总结

      优点:可以做到不对目标对象进行修改的前提下,对目标对象进行功能的扩展和拦截。

      缺点:因为代理对象,需要实现与目标对象一样的接口,会导致代理类十分繁多,不易维护,同时一旦接口增加方法,则目标对象和代理类都需要维护

  • 相关阅读:
    在当前的webview中跳转到新的url 使用WebView组件显示网页
    android WebView中js的alert()失效
    移动平台的WebApp之Meta标签
    CSS背景属性Background详解
    JS仿淘宝左侧菜单
    什么是 Backbone.js
    mssql Row_Number() 分页 DISTINCT 问题
    跟我一起玩转Sencha Touch 移动 WebApp 开发(一)
    HTML5 book响应式翻页效果
    HTML5开发的翻页效果实例
  • 原文地址:https://www.cnblogs.com/JavaHxm/p/10763274.html
Copyright © 2011-2022 走看看