当前位置: 首页 > news >正文

海南建设银行分行网站苏宁易购网站建设分析

海南建设银行分行网站,苏宁易购网站建设分析,linu安装wordpress,有没有做宠物的网站第一章 AOP前奏 1.1 代理模式 代理模式:我们需要做一件事情,又不期望自己亲力亲为,此时,可以找一个代理【中介】 我们【目标对象】与中介【代理对象】不能相互转换,因为是“兄弟”关系 1.2 为什么需要代理【程序中…

第一章 AOP前奏

1.1 代理模式
  • 代理模式:我们需要做一件事情,又不期望自己亲力亲为,此时,可以找一个代理【中介】

  • 我们【目标对象】与中介【代理对象】不能相互转换,因为是“兄弟”关系

    在这里插入图片描述

1.2 为什么需要代理【程序中】
  • 需求:实现【加减乘除】计算器类

    • 在加减乘除方法中,添加日志功能【在计算之前,记录日志。在计算之后,显示结果。】
  • 实现后发现问题如下

    • 日志代码比较分散,可以提取日志类
    • 日志代码比较混乱,日志代码【非核心业务代码】与加减乘除方法【核心业务代码】书写一处
  • 总结:在核心业务代码中,需要添加日志功能,但不期望在核心业务代码中书写日志代码

    • 此时:使用代理模式解决问题【先将日志代码横向提取到日志类中,再动态织入回到业务代码中
1.3 手动实现动态代理环境搭建
  • 实现方式

    • 基于接口实现动态代理: JDK动态代理
    • 基于继承实现动态代理: Cglib、Javassist动态代理
  • 实现动态代理关键步骤

    • 一个类:Proxy
      • 概述:Proxy代理类的基类【类似Object】
      • 作用:newProxyInstance():创建代理对象
    • 一个接口:InvocationHandler
      • 概述:实现【动态织入效果】关键接口
      • 作用:invoke(),执行invoke()实现动态织入效果
1.4 手动实现动态代理关键步骤

注意:代理对象与实现类【目标对象】是“兄弟”关系,不能相互转换

  • 创建类【为了实现创建代理对象工具类】
  • 提供属性【目标对象:实现类】
  • 提供方法【创建代理对象】
  • 提供有参构造器【避免目标对为空】
package com.atguigu.beforeaop;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;/*** @author Chunsheng Zhang 尚硅谷* @create 2022/3/28 16:22*/
public class MyProxy {/*** 目标对象【目标客户】*/private Object target;public MyProxy(Object target){this.target = target;}/*** 获取目标对象的,代理对象* @return*/public Object getProxyObject(){Object proxyObj = null;/**类加载器【ClassLoader loader】,目标对象类加载器目标对象实现接口:Class<?>[] interfaces,目标对象实现所有接口InvocationHandler h*/ClassLoader classLoader = target.getClass().getClassLoader();Class<?>[] interfaces = target.getClass().getInterfaces();//创建代理对象proxyObj = Proxy.newProxyInstance(classLoader, interfaces, new InvocationHandler() {//执行invoke()实现动态织入效果@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//获取方法名【目标对象】String methodName = method.getName();//执行目标方法之前,添加日志MyLogging.beforeMethod(methodName,args);//触发目标对象目标方法Object rs = method.invoke(target, args);//执行目标方法之后,添加日志MyLogging.afterMethod(methodName,rs);return rs;}});return proxyObj;}//    class invocationImpl implements InvocationHandler{
//    }}
@Testpublic void testBeforeAop(){//        int add = calc.add(1, 2);
//        System.out.println("add = " + add);//目标对象Calc calc = new CalcImpl();//代理工具类MyProxy myProxy = new MyProxy(calc);//获取代理对象Calc calcProxy = (Calc)myProxy.getProxyObject();//测试
//        int add = calcProxy.add(1, 2);int div = calcProxy.div(2, 1);}
http://www.yayakq.cn/news/911263/

相关文章:

  • 模板网站可以做优化高清视频服务器
  • 网站建设的关键细节吉林网络优化多少钱
  • 做网站编辑怎么样semseo
  • 电商平台建站关键词林俊杰的寓意
  • asp.net创建项目和创建网站的区别上海网站建设怎么
  • 酒类做网站公司网站设计策划案
  • 网站建设设计岗位职责学做网站什么语言合适
  • wordpress游戏评测站睡觉标志设计要素
  • 后台网站更新 网站没显示西宁城西区建设局网站
  • 中国建设银行老版本下载官方网站wordpress 评论 模块
  • 安徽建站之星网站建设服务包括什么
  • 玉溪网站建设公司公司名字查重系统
  • 青岛北京网站建设公司哪家好好的交互设计网站
  • 宜宾移动网站建设虚拟主机和云虚拟主机区别
  • 桂林黄页大全桂林本地信息网哈尔滨网络优化推广公司
  • 港巢网站建设商城网站建设经验
  • mvc4做网站五网站建设酷万网络
  • 手机抖音你做我女朋友好吗套路网站重庆建设工程信息网查询成绩
  • 网页制作中的网站维护网站首页设计过程
  • 四川达州网站建设公司建站网站
  • 建设网站需要什么东西自建网站服务器
  • 深圳婚纱摄影网站建设网站怎么做成二维码
  • 青岛app网站开发上海网页制作培训班
  • 网站设计制作多少钱常州seo第一人
  • 携程网站用js怎么做自建网站平台 优帮云
  • 网站建设应对客户问题的话术上虞市建设风机厂网站
  • alexa排名是什么意思啊宁波seo管理
  • 蓝色网站建设湖南3合1网站建设公司
  • 网页制作与网站建设问答题网站导航是什么
  • 一个虚拟主机怎么做多个网站青岛百度快速排名优化