原文网址:Java设计模式--在项目中的应用_IT利刃出鞘的博客-CSDN博客

简介

本文介绍我在项目中是如何运用设计模式的。

我实际用到的设计模式有:单例模式、责任链模式、观察者模式、适配器模式、策略模式、代理模式。其应用场景如下文所述。

单例模式的应用

单例模式的作用:保证某个类只有一个实例。

应用1. 雪花算法工具类

项目中需要生成全局唯一ID,雪花算法是最常用的方法。需要用单例模式来保证只有一个工具类实例。

雪花算法工具类详见:分布式--雪花算法--使用/原理/实例_IT利刃出鞘的博客-CSDN博客

责任链模式

责任链模式的作用:符合开闭原则(对添加开放,对修改关闭)。新的逻辑只需增加责任链上的一个节点即可,无需改动其他代码。

应用1.用户权限的控制

校验用户的权限:token权限、URL权限、是否已经被管理员禁用等。

应用2.短信发送的校验

校验短信的数据:是否手机号码在黑名单里、参数是否合法、平台的短信功能是否开启等

观察者模式

观察者模式的作用:生产者与消费者隔离,生产者无需去关心消费者的逻辑。

应用1.canal数据同步

情景

使用canal将MySQL的数据同步到ElasticSearch里边。

详述

当时我用的是canal的MQ模式,将canal的数据通过RocketMQ进行接收,本处我将负责接收数据的程序称为程序A。

程序A收到数据之后,将数据进行解析,判断出是MySQL哪张表的操作,是增删改的哪一种,然后,将这个信息发布出去。

然后各个业务方订阅自己业务感兴趣的信息。

应用2.基础业务数据同步到上层

情景

        在一个智慧园区项目中,微服务A管理设备基础数据,微服务B和C是更上层的服务:

  • 微服务B:对智能场景进行编排(比如:晚上19:00时自动打开所有灯、开启广告屏)
  • 微服务C:对园区状态进行统计(比如:设备在线状态、店铺合同的到期状态)

微服务A中设备被删除了之后,也要同步将微服务B和C中的设备删掉。

详述

        在删除微服务A中的设备时,发布一条消息,微服务B和C的监听器会自动处理这个删除的消息。

其实此处也可以用MQ。MQ本质上也是一种观察者模式(生产者有业务时发出消息,让消费者消费)。

适配器模式

适配器模式的作用:两方只需负责自己的代码,适配器进行兼容。

应用1.跨部门的合作

        当时两个部门都做园区管理类的项目。后期,我们部门的项目里要加新设备,要加的这类设备,另一个部门已经做过了,代码已经有了,只是与我们的代码不完全适配。

这时,我用了适配器模式对两个部门的代码进行兼容。

代理模式

代理模式的作用:外部不需要改动代码,代理类进行统一处理。

应用1.统一处理

情景

老项目逐步迁移到新项目,老项目的用户的数据统一从新项目中的用户中台上去。

详述

        将原先的Service写了一个代理类,在执行前根据配置自由选择使用老项目的数据还是新项目的数据。这样业务代码完全不用动。

策略模式

策略模式的作用:便于扩展、逻辑清晰。

应用1.多个厂家的短信发送

情景

        项目中有多个短信服务提供商,比如:网易、Send Cloud、阿里。可以根据配置来选择使用哪个厂商的短信功能。

详述

        写一个抽象类,里边有抽象的发短信方法。写三个实现类:网易、Send Cloud、阿里,去实现发短信抽象方法。

Java设计模式--在项目中的应用相关推荐

  1. java设计模式在项目中的使用_SpringMVC项目里,有必要使用一些设计模式吗?

    背景 为了兼容多种业务,想在项目中使用一些设计模式,以便于管理. 例如,我需要创建用户并返回userid,每种业务创建的方式都不一样. 我选取了"适配器模式",但是我发现,在spr ...

  2. 设计模式在项目中的应用案例_设计模式在项目中的应用(初学者版)

    文章首发链接: 设计模式在项目中的实际应用(应试版)​mp.weixin.qq.com 本文适用于设计模式初学者. 很多人学习了设计模式,但在项目开发中仍然不知道如何使用: 很多小伙伴在课堂上跟着老师 ...

  3. java设计模式适配器模式_Java中的适配器设计模式

    java设计模式适配器模式 适配器设计模式是一种结构设计模式 ,可以帮助我们连接到通过不同接口公开相似功能的旧版或第三方代码. 适配器的现实世界是我们用来将USB电缆连接到以太网端口的类比. 在设计一 ...

  4. java 设计模式 示例_Java中的访问者设计模式–示例教程

    java 设计模式 示例 访客模式是行为设计模式之一 . 当我们必须对一组相似类型的对象执行操作时,将使用访问者模式. 借助访问者模式,我们可以将操作逻辑从对象移动到另一个类. 例如,假设有一个购物车 ...

  5. 史上最全的Java设计模式(更新中...)

    前言: 时间过得很快,不知不觉就大三了...我感觉还有好多东西没有学,这一段在准备软考中级--软件设计师,好像要用到设计模式,所以此篇博客就当作是我的学习Java设计模式的笔记吧. 唉...也不知道这 ...

  6. maven只打包java目录_ssm项目中maven对resources目录打包的路径_默认路径,自定义路径...

    博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): ssm项目打包后mybatis的mapper.xml文件没有放进去 问题出现的原因: ssm项目打包后mybatis的m ...

  7. Java RMI(2):项目中使用RMI

    转载地址: http://6221123.blog.51cto.com/6211123/1112619 点击打开链接 RMI网络编程开发之二 如何搭建基于JDK1.5的分布式JAVA RMI 程序 2 ...

  8. java 设计模式 示例_Java中的状态设计模式–示例教程

    java 设计模式 示例 状态模式是行为设计模式之一 . 当对象根据其内部状态更改其行为时,将使用状态设计模式. 如果必须根据对象的状态更改其行为,则可以在对象中使用状态变量,并使用if-else条件 ...

  9. java 设计模式 示例_Java中的中介器设计模式-示例教程

    java 设计模式 示例 中介者模式是行为设计模式之一 ,因此它处理对象的行为. 中介器设计模式用于在系统中不同对象之间提供集中式通信介质. 根据GoF,中介者模式意图是: 通过封装不同对象集相互交互 ...

最新文章

  1. 算数基本定理(例题:LightOJ1341)
  2. postman测试传入json
  3. Python 数据结构视频教程五
  4. 创建面板对象Java,从PNG图像或Java面板创建PDF
  5. [转]linux各文件夹介绍
  6. Android按两次返回键退出应用
  7. 制作旋转led_LED用蓝宝石衬底及加工工艺!
  8. c语言运行给拦截了怎么办,[蓝桥杯][算法训练VIP]拦截导弹 (C语言代码)
  9. 整型数据类型存储空间大小(信息学奥赛一本通-T1016)
  10. .NET 4.0 Beta2中的BigInteger和Complex类(转)
  11. EMC -- DFS篇(Documentum Foundation Services)
  12. 《C语言程序设计》讲义
  13. 中国式两性关系把外国人搞晕!
  14. 漫漫长路——微信十年历程
  15. filecoin-存储证明子系统(rust-fil-proofs)[翻译]
  16. 【持续更新】收集机器学习/深度学习比赛网站
  17. 华为Nova7Pro和华为mate30 哪个好
  18. 几何语言点C是ab的中点,数学几何定理符号语言
  19. 微信运动刷步软件是真的吗?微信运动刷步软件有用吗?
  20. Automation Anywhere A360 Advance Certified认证 RPA Professional 真题和详细攻略

热门文章

  1. 关于小间距QFN封装PCB设计的串扰抑制分析
  2. android 心率测试,用手机测量你的心跳!安卓心电图App试用
  3. FairyGUI简单背包的制作
  4. 酷播云html5倍速功能视频播放器,可以倍速播放视频的浏览器插件
  5. 计算机企业社会实践活动鉴定范文,计算机专业社会实践自我鉴定范文
  6. 医院计算机岗位实践报告,it实习报告范文3000字
  7. MD5 hash碰撞实现解密
  8. 2021年9月CISP-A(注册信息系统审计师)培训圆满结束
  9. arcgis的基本使用1
  10. jis拉伸试棒图纸_一种加工拉伸试棒的装卡装置的制作方法