如何整合工厂设计模式来应用Annotation操作
发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,本篇内容介绍了"如何整合工厂设计模式来应用Annotation操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2025年02月10日如何整合工厂设计模式来应用Annotation操作
本篇内容介绍了"如何整合工厂设计模式来应用Annotation操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
现在已经清楚了Annotation的整体作用,但是Annotation到底在开发中能做哪些事情呢?为了进一步理解Annotation的处理目的,下面将结合工厂设计模式来应用Annotation操作。
import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class JavaAPIDemo {public static void main(String[] args) throws Exception {//IMessage msg = Factory.getInstance(MessageImpl.class);//msg.send("www.mldn.cn")MessageService messageService=new MessageService(); messageService.send("www.mldn.cn"); }}@Retention(RetentionPolicy.RUNTIME)@interface UserMessage{public Class > clazz();}@UserMessage(clazz =MessageImpl.class ) //利用Annotation实现了类的使用class MessageService{private IMessage message;public MessageService(){ UserMessage use=MessageService.class.getAnnotation(UserMessage.class);this.message = (IMessage)Factory.getInstance(use.clazz()); //直接通过Annotation获取}public void send(String msg){this.msg.send(msg); }}class Factory {private Factory() {}public staticT getInstance(Class clazz){ //直接返回一个实例化对象try {return (T)new MessageProxy().bind(clazz.getDeclaredConstructor().newInstance()); } catch (Exception e) { e.printStackTrace();return null; } }}interface IMessage {public void send(String msg);}class MessageImpl implements IMessage {@Overridepublic void send(String msg) { System.out.println("【消息发送】"+msg); }}class NetMessageImpl implements IMessage {@Overridepublic void send(String msg) { System.out.println("【网络消息发送】"+msg); }}class MessageProxy implements InvocationHandler {private Object target;public Object bind(Object target){this.target = target;return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this); }public boolean connect(){ System.out.println("【代理操作】进行消息发送通道的连接。");return true; }public void close() { System.out.println("【代理操作】关闭连接通道。"); }@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {try {if(this.connect()){return method.invoke(this.target, args); }else {throw new Exception("【ERROR】消息无法进行发送!"); } }finally {this.close(); } }}
执行结果:
更换
@UserMessage(clazz =NetMessageImpl.class )
"如何整合工厂设计模式来应用Annotation操作"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
消息
工厂
模式
设计模式
应用
设计
整合
内容
更多
知识
通道
代理
实用
清楚
学有所成
接下来
事情
作用
困境
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
老师问数据库怎么设计
邯郸天气预报软件开发
dota2 数据库
网络安全人的未来
登陆出现qq服务器异常
昌吉存储服务器维保电话
网络安全画初中
绘网络安全画饭圈乱像绘画作品
数据库医院信息管理系统 hrp
微创软件数据库测试
达梦数据库动态sql
加强领导保障网络安全
软件开发效率考核指标
衣食住行软件开发
软件开发未来发展前景
软件开发中心主任述职报告
数据库实验DB5
互联网科技公司岗位分布
数据库 提交更新
sq2000数据库不启动
消费奖励盘软件开发
mysql数据库程序设计证书
计算机网络技术人员职业技能
滨州便民平台软件开发
中学网络安全教育活动
山西网络安全屏障视频
网络安全教肓平台作业
安卓怎么批量上传数据库中
网络安全研究从什么时候开始
lims数据库