java笔记(29)——动态代理(工厂模式)【示例】

文章目录

  • 动态代理(工厂模式)
      • 接口类
      • 实体类
      • 代理类
      • 测试类

动态代理(工厂模式)

接口类

package com.itchen.proxytest;public interface Star {public abstract String sing(String name);public abstract void dance();
}

实体类

package com.itchen.proxytest;public class BigStar implements Star{private String name;public BigStar(String name) {this.name = name;}public BigStar() {}@Overridepublic String sing(String name){System.out.println(this.name + "正在唱" + name);return "蟹蟹";}@Overridepublic void dance(){System.out.println(this.name + "正在跳");}@Overridepublic String toString() {return "BigStar{" +"name='" + name + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

代理类

package com.itchen.proxytest;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;/*** 类的作用:*      创建一个代理* */
public class ProxyUtil {/*** 为对象创建代理*  形参:被代理的对象*  返回值:代理对象* */public static Star createProxy(BigStar bigStar){/***  参数1:指定类加载器*  参数2:指定接口*  参数3:指定任务* */Star star = (Star)Proxy.newProxyInstance(ProxyUtil.class.getClassLoader(),new Class[]{Star.class},new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {/*** 参数1:代理的对象* 参数2:代理的方法* 参数3:代理方法的实参* */if("sing".equals(method.getName())){System.out.println("准备话筒");}else if("dance".equals(method.getName())){System.out.println("准备场地");}return method.invoke(bigStar,args);}});return star;}
}

测试类

package com.itchen.proxytest;public class Test {public static void main(String[] args) {BigStar bigStar = new BigStar("鸡哥");Star proxy = ProxyUtil.createProxy(bigStar);String result = proxy.sing("梦回还");proxy.dance();System.out.println(result);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转化分析|一位数据分析师的实验田复盘

花3个月时间,吭哧吭哧写了80页草稿的《投资——1. 知己知彼》,发布之前豪言壮语“2000阅读量”,到现在累计72,真是piapia打脸!心态那个崩啊!! 朋友们吐槽内容太长、定位不明确、分析深度不够&am…

手持式雷达流速仪的工作原理

TH-LS5手持式雷达流速仪基于雷达技术和多普勒效应进行工作。它发射一束微波信号到水体表面,当信号遇到水流时,会发生多普勒频移。发射器发出的高频电磁波信号(通常是微波信号)遇到流体后,部分信号会被反射回来。接收器接收到反射回来的信号&a…

开发一套java语言的智能导诊需要什么技术?java+ springboot+ mysql+ IDEA互联网智能3D导诊系统源码

开发一套java语言的智能导诊需要什么技术?java springboot mysql IDEA互联网智能3D导诊系统源码 医院导诊系统是一种基于互联网和3D人体的智能化服务系统,旨在为患者提供精准、便捷的医院就诊咨询服务。该系统整合了医院的各种医疗服务资;智慧…

android gradle开发与应用(-)基础

Gradle 是一个强大的自动化构建工具,广泛用于多种编程语言和平台,尤其是在 Android 应用开发中。Android Studio,作为官方的 Android 开发环境,使用 Gradle 作为其构建系统。了解 Gradle 的基础对于有效地管理和构建 Android 项目…

【机器学习】机器学习与医疗健康在疾病预测中的融合应用与性能优化新探索

文章目录 引言第一章:机器学习在医疗健康中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 特征工程 1.2 模型选择1.2.1 逻辑回归1.2.2 决策树1.2.3 随机森林1.2.4 支持向量机1.2.5 神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化…

【你也能从零基础学会网站开发】(了解)关系型数据库的基本架构体系结构与概念理解

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 关系型数据库的…

【第五节】C/C++数据结构之图

目录 一、图的基本概念 1.1 图的定义 1.2 图的其他术语概念 二、图的存储结构 2.1 邻接矩阵 2.2 邻接表 三、图的遍历 3.1 广度优先遍历 3.2 深度优先遍历 四、最小生成树 4.1 最小生成树获取策略 4.2 Kruskal算法 4.3 Prim算法 五、最短路径问题 5.1 Dijkstra算…

INFINI Easysearch尝鲜Hands on

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个自主可控的轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。 与 Elasticsearch 相比,Easysear…

熊猫烧香是什么?

熊猫烧香(Worm.WhBoy.cw)是一种由李俊制作的电脑病毒,于2006年底至2007年初在互联网上大规模爆发。这个病毒因其感染后的系统可执行文件图标会变成熊猫举着三根香的模样而得名。熊猫烧香病毒具有自动传播、自动感染硬盘的能力,以及…

上海市计算机学会竞赛平台2023年5月月赛丙组最大子阵和

题目描述 给定 𝑛𝑛nn 个整数组成一个方阵 𝑎𝑖,𝑗ai,j​,请找一个 𝑘𝑘kk 的子方阵,使得子方阵内的数字之和达到最大,输出这个最大值。 输入格式 第一行&…

vue 组件下 img 标签动态传入不展示

效果 解决办法&#xff1a; require() <titleComponent:title"业务工作概览":src"require(/assets/imgs/evaluation/overviewStatistics.png)"></titleComponent> 效果&#xff1a;

Github 上 Star 数最多的大模型应用基础服务 Dify 深度解读(一)

背景介绍 接触过大模型应用开发的研发同学应该都或多或少地听过 Dify 这个大模型应用基础服务&#xff0c;这个项目自从 2023 年上线以来&#xff0c;截止目前&#xff08;2024-6&#xff09;已经获得了 35k 多的 star&#xff0c;是目前大模型应用基础服务中最热门的项目之一…

ss命令详细使用讲解文章

ss 命令作为 iproute2 软件包的一部分&#xff0c;是Socket Statistics的缩写&#xff0c;也称为IPC&#xff08;Inter-process Communication&#xff09;套接字统计 ss命令用于显示sockets&#xff08;套接字&#xff09;的状态。与netstat类似&#xff0c;但它通常提供更详…

WebKit 简介及工作流程探秘

在探索现代互联网世界的奥秘时&#xff0c;浏览器引擎是不可或缺的一环&#xff0c;而 WebKit 正是其中的佼佼者。WebKit&#xff0c;这个开源的浏览器渲染引擎&#xff0c;以其卓越的性能和广泛的支持度&#xff0c;成为了 Safari、早期的 Chrome 以及其他众多浏览器的核心。本…

【笔试记录】华为 | 20230823 | cpp

获取连通的相邻节点列表 题目描述 在网元内&#xff0c;存在了 N 个转发节点&#xff0c;每个转发节点有自己唯一的标识 TB 且每个节点有 M 个端口&#xff0c;节点间通过端口进行报文通讯。出于业务隔离的需求&#xff0c;服务器内的端口被划分为多个通讯平面(用 VLAN 隔离&…

取消lfs, 使用原始文件上传的办法

查询当前仓库使用lfs的文件&#xff0c;然后删除 git lfs ls-files 删除lfs文件后&#xff0c;提交commit git add . git commit -m"remove lfs file" 查询本地lfs配置 git config --local --list 重置本地lfs配置 git config --unset filter.lfs.smudgegit co…

从0到1搭建微服务框架

目录 1.技术栈&#xff1a; 2.模块介绍: 3.关键代码讲解 3.1基础公共模块(common)依赖&#xff1a; 3.3授权模块(auth)依赖: 3.4授权模块核心配置类(AuthrizatonConfig): 3.4 SecurityConfig.java 3.5 bootstrap的核心配置文件(其他服务配置类似这个)&#xff1a; 3.6n…

防爆巡检终端在石化工厂安全保障中的应用

防爆巡检终端在石化工厂安全保障中的应用是广泛而关键的&#xff0c;其设计旨在确保在易燃易爆环境中进行安全、有效的巡检工作。以下是防爆巡检终端在石化工厂安全保障中的详细应用描述&#xff1a; 1. 环境监测与预警 防爆巡检终端配备了各种传感器&#xff0c;能够实时监测…

网银U盾多又乱?后悔没早点用USB Server远程连接管理!

一、引言 网银服务已成为企业日常运营中不可或缺的一部分。但随着企业规模的扩大和业务的增多&#xff0c;网银U盾的数量也随之激增&#xff0c;又多又乱&#xff0c;只能频繁插拔、分散管理&#xff0c;不仅效率低下&#xff0c;而且存在严重的安全隐患。 事实上&#xff0…

ADS131A04硬件设计与软件调试

一、IC基本信息 ADS131A0x 双通道或四通道 24 位 128kSPS 同步采样 Δ-Σ ADC •双通道或四通道同步采样差分输入 • 数据速率&#xff1a;高达 128kSPS • 高性能&#xff1a; – 单通道精度&#xff1a;在 10,000:1 动态范围内优于 0.1% – 有效分辨率&#xff1a;20.6位…