作家
登录

记录自己理解的一些设计模式

作者: 来源: 2017-04-08 19:03:08 阅读 我要评论

如不雅我们须要添加一个过滤的萌芽(sql中有敏感字的就直接返回null,而不萌芽数据库),只须要可以添加一个FilterQuery装潢者即可:

  1. public class FilterQuery implements Query {  
  2. private Query query;  
  3. private List words = new ArrayList<>();  
  4. public FilterQuery(Query query) {  
  5. this.query = query;  
  6. words.add("fuck");  
  7. words.add("sex");  
  8.  
  9. @Override  
  10. public Result query(String sql) {
  11. for(String word : words) {  
  12. if(sql.contains(word)) return null 
  13.  
  14. return query.query(sql);  
  15.  
  16.  
  17. Query filterQuery = new FilterQuery(simpleQuery);  
  18. System.out.println(filterQuery.query("select * from t_student where name = 'fuck'")); // null  
  19. System.out.println(filterQuery.query("select * from t_student where name = 'format'")); // Result(obj=java.lang.Object@1b4fb997, sql=select * from t_student where name = 'format'

代劳模式

代劳模式的感化是应用一个代劳类来代替本来类进行操作。比较常见的就是aop中就是应用代劳模式完成事务的处理。

代劳模式分静态代劳和动态代劳,静态代劳的道理就是对目标对象进行封装,最后调用目标对象的办法即可。

动态代劳跟静态代劳的差别就是动态代劳中的代劳类是法度榜样运行的时刻生成的。Spring中对于接口的代劳应用jdk内置的Proxy和InvocationHandler实现,对于类的代劳应用cglib完成。

外不雅模式

以1个UserService为例,应用jdk自带的代劳模式完成计算办法调用时光的需求:

  1. // UserService接口  
  2. public interface IUserService {  
  3. void printAll();  
  4.  
  5. // UserService实现类  
  6. class UserService implements IUserService {  
  7. @Override  
  8. public void printAll() {  
  9. System.out.println("print all users");  
  10.  
  11.  
  12. // InvocationHandler策略,这里打印了办法调用前后的时光 

      推荐阅读

      人工智能技术是基于大数据吃饭的?

    自负年夜 Google 的人工智能 AlphaGO 成为围棋界的百胜将近开端,AI(Artificial Intelligence,人工智能)这两个英文字,刹那间成为科技业最热点的关键字之一。而就在2017岁首?年代,早在>>>详细阅读


    本文标题:记录自己理解的一些设计模式

    地址:http://www.17bianji.com/lsqh/34663.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)