博客
关于我
面试刷题14:介绍一下你工作中用到的设计模式?
阅读量:445 次
发布时间:2019-03-06

本文共 1049 字,大约阅读时间需要 3 分钟。

那些被时间沉淀下来的最贱时间,就是设计模式,它有利于提高沟通和设计的效率和质量。
我是李福春,我在准备面试,今天的问题是:
工作中你用到了哪些设计模式?
**分析:**
这个问题比较open, 可以结合以往项目经历中用到的设计模式,挑选2个左右的例子出来讲解,讲讲为什么要使用设计模式,带来了哪些优点和不便。
如果实在找不出来,可以结合jdk和spring,每个挑一两个地方来讲2种左右的设计模式,相信面试官也会比较满意。
**我的回答:**
设计模式是程序员在设计过程中多年的最佳实践沉淀,可以提高工程师之间研发质量,沟通效率。
我在X游戏接入平台中使用了模板方法模式,场景:研发的游戏需要推向不同的渠道,每个渠道的用户登录和充值接口的实现都不太一样,而X游戏平台作为一个游戏接入不同渠道的服务平台需要保证游戏接入的一致性,以及消除到不同渠道的差异性。
使用模板方法的好处:
  1. 固定了游戏接入的流程:都有登录,充值接入;
  2. 解耦了协议和实现:每个渠道按照对应的对接协议差别的接入,在上层抹掉差差异。
  3. 扩展性更好;可以轻松的增加新渠道;
  4. 可以更灵活处理游戏接入;

我在优化登录代码的过程中,使用了观察者模式。比如可以使用Spring的事件机制或者guava提供的EventBus;
之前的登录代码是面条式的,一行代码处理一个对应的逻辑,比如,登录完成之后,记录日志,通知积分服务增加积分,通知统计服务增加登录次数,变更日活;
使用观者模式之后,发一个登录成功的消息,在监听者中处理不同的逻辑操作。简化了代码,可维护性,可扩展性得到了提高。
最后可以盘点一下设计模式的分类和列举。如本篇的title图。

jdk中用到的设计模式盘点

装饰器模式:java.io中的流处理;
建造者模式:Http2/client的构建;
单例模式:  Runtime类, 单例模式主要在高并发的情况下,需要加入双检锁,或者直接使用枚举单例的方式。

spring中常用设计模式盘点

工厂模式: BeanFactory, ApplicationContext中的对象创建;
观察者模式: 各种事件的发布和通知
模板模式: JdbcTemplate
AOP: 综合了代理,装饰器,适配器模式

小结

本篇按照我的经验回答了工作中的设计模式例子,同时延伸到设计模式的分类和列举,如果工作中实在想不出来用到了哪些设计模式,
可以以jdk,spring中使用到的设计模式为例剖析一下设计模式的使用以及带来的好处。

原创不易,转载请注明出处。

你可能感兴趣的文章
Python基础之用户交互、流程控制、循环语句
查看>>
表的相关数据
查看>>
IDEA 出现错误:找不到或无法加载主类
查看>>
JSP中引用CSS样式文件却无法显示的问题解决方案
查看>>
UUID的使用
查看>>
Invalid bound statement (not found)报错的可能原因
查看>>
MapReduce之自定义分区器Partitioner
查看>>
/dev/null--Linux系统黑洞,解决控制台的刷屏问题
查看>>
scala:分别使用懒汉式和饿汉式实现单例模式
查看>>
如何使用python把json文件转换为csv文件
查看>>
强大的拉姆表达式转Sql 类库 - SqlSugar 隐藏功能之Lambda
查看>>
让JS写的更接近OOP
查看>>
LVM扩容案例
查看>>
zabbix笔记_008 zabbix监控交换机路由器
查看>>
搭建内网yum仓库
查看>>
Sql 语法整理
查看>>
最近在读 思考,快与慢,不知为什么,突然想用代码把系统1和系统2描绘出来,试试看,外加对自己的思考
查看>>
WPF:解决数据验证ValidationRule与按钮Canexcute联动的问题
查看>>