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

十大ppt模板免费下载网站网站建设实践总结

十大ppt模板免费下载网站,网站建设实践总结,邯郸住房和城乡建设部网站,好视通视频会议app下载安装一、代理模式 1、举例 海外代购 2、代理基本结构图 3、静态代理 1、真实类实现一个接口,代理类也实现这个接口。 2、代理类通过真实对象调用真实类的方法。 4、静态代理和动态代理的区别 1、静态代理在编译时就已经实现了,编译完成后代理类是一个实际…

一、代理模式

1、举例

海外代购

2、代理基本结构图

3、静态代理

1、真实类实现一个接口,代理类也实现这个接口。

2、代理类通过真实对象调用真实类的方法。

4、静态代理和动态代理的区别

1、静态代理在编译时就已经实现了,编译完成后代理类是一个实际的class文件。

2、动态代理是在运行时动态生成的,即编译完成后没有实际的class文件,而是在运行时动态生成类字节码,再加载到JVM中。

5、JDK动态代理实现

核心:构造代理对象,按JDK要求获取参数,让JDK生成代理对象。

// 生成代理对象 - 核心
Dinner proxy = (Dinner) Proxy.newProxyInstance(classLoader, interfaces, h);
package allwe.testProxy;/*** 定义一个晚餐接口*/
public interface Dinner {void eat(String foodName);void drink(String juiceName);
}
package allwe.testProxy;import lombok.Data;/*** 定义人 - 实现晚餐接口*/
@Data
public class Person implements Dinner {private String name;public Person(String name) {this.name = name;}@Overridepublic void eat(String foodName) {System.out.println(this.name + "吃" + foodName);}@Overridepublic void drink(String juiceName) {System.out.println(this.name + "喝" + juiceName);}
}
package allwe.testProxy;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;/*** 我的调用处理器 - 设定增强规则*/
public class MyInvocationHandler implements InvocationHandler {private final Dinner dinner;public MyInvocationHandler(Dinner dinner) {this.dinner = dinner;}/*** 定义增强规则** Object proxy     代理对象* Method method    被代理的方法* Object[] args    被代理方法运行时的实参*/@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {if (method.getName().equals("eat")) {System.out.println("前置增强===================饭前洗手");// 运行eat方法method.invoke(dinner, args);System.out.println("后置增强===================饭后洗碗");} else if (method.getName().equals("drink")) {System.out.println("前置增强===================打开瓶盖");// 运行eat方法method.invoke(dinner, args);System.out.println("后置增强===================关上瓶盖");} else {return method.invoke(dinner, args);}return null;}
}
package allwe.testProxy;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;/*** 动态代理实现*/
public class TestProxy {// 通过Proxy动态代理获取一个代理对象,在代理对象中,对某个方法增强public static void main(String[] args) {// 创建一个人 - 张三Dinner dinner = new Person("张三");// 被代理对象的类加载器ClassLoader classLoader = dinner.getClass().getClassLoader();// 被代理对象所实现的所有接口Class<?>[] interfaces = dinner.getClass().getInterfaces();// 执行处理器对象 - 专门用于定义增强的规则的InvocationHandler h = new MyInvocationHandler(dinner);// 生成代理对象 - 核心Dinner proxy = (Dinner) Proxy.newProxyInstance(classLoader, interfaces, h);// 使用代理对象调用Dinner接口的方法proxy.eat("馒头");proxy.drink("可乐");}
}

6、Cglib动态代理实现

核心:构造代理对象,按CGLIB要求获取参数,让CGLIB生成代理对象。

// 1.创建一个Enhancer对象
Enhancer enhancer = new Enhancer();
// 2.设置真实对象的类
enhancer.setSuperclass(personClass);
// 3.设置增强逻辑
enhancer.setCallback(methodInterceptor);
// 4.创建代理对象
Person personProxy = (Person) enhancer.create();
package allwe.testCGLib;import lombok.Data;/*** 定义人*/
@Data
public class Person {private String name;// Cglib使用这个构造器创建真实对象public Person() {this.name = "张三";}public void eat(String foodName){System.out.println(this.name + "吃" + foodName);}
}
package allwe.testCGLib;import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;import java.lang.reflect.Method;/*** 我的方法拦截器 - 定义方法拦截规则*/
public class MyMethodInterceptor implements MethodInterceptor {/*** Object o                    生成之后的代理对象* Method method               父类中原本要执行的方法* Object[] objects            方法在被调用时接收的实参* MethodProxy methodProxy     子类中重写的  父类方法*/@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println("==========前置增强==========");// 执行子类对象方法   -->  son.super.method(args)Object res = methodProxy.invokeSuper(o, objects);System.out.println("==========后置增强==========");return res;}
}
package allwe.testCGLib;import org.junit.jupiter.api.Test;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;public class TestCglib {@Testpublic void testCglib() {// 获取被代理的类Class<? extends Person> personClass = Person.class;// 定义增强规则MethodInterceptor methodInterceptor = new MyMethodInterceptor();// 获取一个Person的代理对象// 1.创建一个Enhancer对象Enhancer enhancer = new Enhancer();// 2.设置真实对象的类enhancer.setSuperclass(personClass);// 3.设置增强逻辑enhancer.setCallback(methodInterceptor);// 4.创建代理对象Person personProxy = (Person) enhancer.create();// 使用代理对象执行方法personProxy.eat("米饭");}
}

二、桥接模式

1、定义

在软件开发中,桥接模式将两个独立变化的维度进行了解耦,不是将两者耦合在一起,形成多继承的结构。

2、举例

毛笔和蜡笔,大中小号,12种颜色。

3、结构:实体与行为分离

4、核心

首先要识别出一个类所具有的两个独特的变化维度,将它们设计为两个独立的继承等级结构,为两个维度都提供抽象层,并建立抽象

http://www.dtcms.com/wzjs/786224.html

相关文章:

  • 重庆网站设计排名上海的网站设计公司价格
  • 受欢迎的句容网站建设软件项目管理是什么
  • 建设银行官方网站下载安装网站做的不好会有什么后果
  • 受欢迎的广州做网站电子商务网站建设与管理案例
  • 有没有做网页接单的网站潍坊互联网推广
  • 石家庄门户网站建设微博问答网站开发
  • 制作静态网站中国百货网
  • 现在还有做系统的网站吗公司运营团队架构
  • 小游戏网站审核怎么做简单的管理系统
  • c 大型网站开发案例网页制作公司介绍
  • 做网页到哪个网站找素材网站建设规划书万能
  • 别的网站做相关链接怎么做百度关键词排名批量查询工具
  • 安卓盒子做网站宠物网站的设计与实现
  • 深圳龙岗做网站公司哪家好货车保险哪家网站可以直接做
  • 网站集群系统 如何做域名解析哪些网站做微课赚钱
  • 免费自助建站系统天津公司网站制作公司
  • 淘宝网站内站建设现状类似游侠客网站建设
  • 网站提示风险全新微信号2元一个自动下单
  • 360网站免费推广怎么做做长海报的网站
  • steam网站代做中煤浙江基础建设有限公司网站
  • vr 做的网站北京做网络推广的公司
  • 城市房产网搜索引擎优化的要点
  • 购物网站建设的目的网站的运营模式
  • 快速搭建网站的工具dedecms导购网站模板
  • 简易个人网站濮阳网站注册
  • 长治做网站哪家好石家庄建站外贸网站
  • 关于建设二级网站的报告怎么申请自己的网站
  • 网站域名在哪里申请树莓派wordpress报错
  • 天津平台网站建设方案装修公司加盟哪个平台
  • 自己有网站做app吗拉新app开发