jk女孩被人偷拍知名企业代码泄露, 原来是属性注解模式(Attribute Annotation Pattern)兴风作浪

编程入门 行业动态 更新时间:2024-10-28 00:28:09

jk女孩<a href=https://www.elefans.com/category/jswz/34/1731355.html style=被人偷拍知名企业代码泄露, 原来是属性注解模式(Attribute Annotation Pattern)兴风作浪"/>

jk女孩被人偷拍知名企业代码泄露, 原来是属性注解模式(Attribute Annotation Pattern)兴风作浪

目的

可以屏蔽掉不同类的区别, 标记某些属性的不同从而对这些属性统一处理

例子代码

最近上海漫展一位身着大胆的女孩去报警, 因为自己身着 jk 制服参加漫展, 在地上做出各种姿势的时候走光被人偷拍, 并被职责污染了 jk 的圈子, 同时还有一则互联网届的新闻, 由于 sonar 服务器配置问题, 多个知名的互联网企业的代码都有泄露, 微软小米任天堂迪士尼等
比如我们要初步描述这两个事件:

定义一个企业类:

@Data
@AllArgsConstructor
public class Enterprise {private String name;private String codeHubName;
}

定义一个 jk 女孩类:

@Data
@AllArgsConstructor
public class JkGirl {private String name;private String cloth;//安全裤,,,private String anquanku;
}

定义一个泄露的方法:

public void printLeakageInfo(Object object) {if(object instanceof Enterprise) {System.out.println("泄露了" + ((Enterprise)object).getCodeHubName());}else if(object instanceof JkGirl) {System.out.println("泄露了" + ((JkGirl)object).getAnquanku());}
}

使用:

public static void main(String[] args) {Enterprise enterprise =new Enterprise("微软","Windows代码库");JkGirl jkGirl =new JkGirl("jkGirl","白色上衣","黑色安全裤");printLeakageInfo(enterprise);printLeakageInfo(jkGirl);
}

输出:

泄露了Windows代码库
泄露了黑色安全裤

问题分析

printLeakageInfo 方法接收了不同的对象, 都要处理 if-else, 每次增加一种类型, 都需要增加一个 if-else, 这样的方法是很难维护的

属性注解模式

定义一个泄露的属性注解

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Leakage {}

在不同类的属性上打上标签:

@Data
@AllArgsConstructor
public class Enterprise {private String name;@Leakageprivate String codeHubName;
}
@Data
@AllArgsConstructor
public class JkGirl {private String name;private String cloth;//安全裤,,,@Leakageprivate String anquanku;
}

重新写输出方法:

Field[] declaredFields = object.getClass().getDeclaredFields();
for (Field declaredField : declaredFields) {if(!declaredField.isAnnotationPresent(Leakage.class)) {continue;}declaredField.setAccessible(true);System.out.println("泄露了" + declaredField.get(object));
}

重新调用这个方法的输出也是和上面一样的

课后作业

  1. 定义一个方法 printObject(Object object) 方法, 打印的时候只打印某些不敏感的属性
  2. 定义一个 @ExcelTitle 注解, 再定义一个 exportExcel(Object object) 方法用来导出带有表头的 excel

微信:

更多推荐

jk女孩被人偷拍知名企业代码泄露, 原来是属性注解模式(Attribute Annotation Pattern)兴风作浪

本文发布于:2023-06-29 03:40:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/938513.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:兴风作浪   被人   注解   知名企业   属性

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!