我在X游戏接入平台中使用了模板方法模式,场景:研发的游戏需要推向不同的渠道,每个渠道的用户登录和充值接口的实现都不太一样,而X游戏平台作为一个游戏接入不同渠道的服务平台需要保证游戏接入的一致性,以及消除到不同渠道的差异性。

  1. 固定了游戏接入的流程:都有登录,充值接入;
  2. 解耦了协议和实现:每个渠道按照对应的对接协议差别的接入,在上层抹掉差差异。
  3. 扩展性更好;可以轻松的增加新渠道;
  4. 可以更灵活处理游戏接入;

我在优化登录代码的过程中,使用了观察者模式。比如可以使用Spring的事件机制或者guava提供的EventBus;

之前的登录代码是面条式的,一行代码处理一个对应的逻辑,比如,登录完成之后,记录日志,通知积分服务增加积分,通知统计服务增加登录次数,变更日活;

使用观者模式之后,发一个登录成功的消息,在监听者中处理不同的逻辑操作。简化了代码,可维护性,可扩展性得到了提高。

jdk中用到的设计模式盘点

装饰器模式:http://java.io中的流处理;

建造者模式:Http2/client的构建;

单例模式: Runtime类, 单例模式主要在高并发的情况下,需要加入双检锁,或者直接使用枚举单例的方式。

spring中常用设计模式盘点

工厂模式: BeanFactory, ApplicationContext中的对象创建;

观察者模式: 各种事件的发布和通知

模板模式: JdbcTemplate

AOP: 综合了代理,装饰器,适配器模式

工作中用到的设计模式?相关推荐

  1. 工作中用不到的技术要不要学?

    有同学说,现在的工作中用不到openstack云计算技术,那要不要学?  我觉得运维班有一个同学有个这方面的"名言"话, 很经典!  如果大多数公司都用openstack云计算了, ...

  2. 工作中用的linux命令

    以前没工作的时候,也总结过一些linux命令,那只是停留在学习层面.工作中用到过的linux命令,感觉印象更深刻一些,也能真正体会其用处,记得也劳.以后学到新命令再添加到这篇博客中. ls -lrt ...

  3. java 最近将工作中用到的工具总结——日期工具

    2019独角兽企业重金招聘Python工程师标准>>> 最近将工作中用到一些工具类总结了一下,写了一个日期类发出来供大家一起学习参考,各位高手如果有其他的方法欢迎扩充到里面,也欢迎指 ...

  4. 可有可无的Mysql工作技巧 3 -- 工作中用到的理论范式,工具,建模经验

    摄影并不仅仅是对现实世界的还原,更多时候是可以被⽤作传递观点和表达意⻅的⼯具 聚合与分组聚合 聚合函数则属于多行函数,表中的多行记录会参与计算,并返回一个数值,且它通常用于分组的相关统计. 所有的聚合 ...

  5. 2013年工作中用到的10个命令:11-20

    11.查看Tomcat的日志信息. 切换到Tomcat的bin目录 cd /usr/var/tomcat/bin 启动Tomcat ./startup.sh 查看Tomcat日志 tail -n 20 ...

  6. 面试官:Spring中用了哪些设计模式?

    spring中常用的设计模式达到九种,我们举例说明. 以后再也不怕面试官问我:Spring中用了哪些设计模式了. 1.简单工厂模式 又叫做静态工厂方法(StaticFactory Method)模式, ...

  7. 浅谈Vue项目中用到的设计模式

    什么是设计模式: 设计模式的原则是找出程序中的变化,并将变化封装起来,实现高效的可复用性.核心在于意图,而不在结构.通过设计模式可以帮助我们增强代码的可重用性.可扩充性. 可维护性.灵活性.我们使用设 ...

  8. 平时代码中用不到设计模式?Are you kidding me?

    引子 平时我是个反应非常慢的人.有多慢呢?大概是两年前有次团队内部开会时,我听到同学说平时代码中用不到设计模式,我当时没有回答.两年后我终于反应过来了:"Are you kidding me ...

  9. spring中用到的设计模式及应用场景

    spring中用到的设计模式及应用场景 1.工厂模式:在Beanfactory和applicationContext创建中都用到了 2.单例模式:Bean默认就是单例模式,单例模式只允许创建一个对象, ...

最新文章

  1. WIN10安装scrapy/channels等不成功的解决方式
  2. mysql 主从复制讲解_MySQL主从复制详解
  3. iOS 两种方法实现左右滑动出现侧边菜单栏 slide view
  4. java-idea-常用的快捷键
  5. Android 六大布局之 GridLayout(网格布局)
  6. 通过binlog恢复mysql数据库
  7. js中常见的数据加密与解密的方法
  8. Flash遮罩——水波、瀑布
  9. 古人是怎样酿醋的(图)
  10. VM虚拟机搭建以及配置网络
  11. python拆分参数列表_Python序列拆分操作符与映射拆分操作符实例
  12. URL重定向(跳转)漏洞
  13. android全渠道浅谈
  14. UE发生GPU崩溃D3D丢失,真的跟硬件有关系。
  15. 模拟电子电路基础——放大器理解与梳理
  16. Android 自定义view完全解析--带你通透了解自定义view
  17. 搜狗老域名作用之快速大量搜狗收录
  18. ios开发面试常见问题及答案
  19. 商务软件开发网课答案
  20. 信息检索——BM25算法实现(自己写)

热门文章

  1. 无法访问gcr.io的几种解决办法
  2. NumPy的思考……
  3. mysql查看锁表与解锁
  4. 典型PC系统各操作指令执行时间
  5. 二叉树节点个数,叶子个数,第K层个数,最低公共节点
  6. Autocomplete
  7. Atom markdown .md 编写格式技巧
  8. TJU Problem 2857 Digit Sorting
  9. uitableview 默认选中行
  10. 转:Flash与.NET的通信(一):XMLConnector的应用