如何整合工厂设计模式来应用Annotation操作
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,本篇内容介绍了"如何整合工厂设计模式来应用Annotation操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2024年12月12日如何整合工厂设计模式来应用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安全错误
数据库的锁怎样保障安全
记录顺序 数据库
赣榆游戏软件开发
配置服务器有错
资阳软件开发成交价
一般网络安全法触犯几年
上海互联网络技术服务案例
dns根服务器位于哪里
asp数据库技术
玖丰网络 服务器租用
数据库的模型作用
游戏软件开发策划书模板
三级网络技术分笔试和上级
专科院校的计算机网络技术
城厢恒驰网络技术
河南软件开发的几大因素
现在服务器4核8的需要多少钱
鞍山柬易软件开发公司
sqlite链接数据库
安徽省网络安全应急中心
软件开发公赚钱吗
网络安全防范技术PPT
软件开发中商品是如何进入购物车
政府网络安全岗位女生
软件开发检查阶段
网络叙述网络安全的概念
广交学生网络安全
软件开发招聘女生
软件开发使用的技术要求
服务器设置本地认证模式
福建如何网络技术推广