博客
关于我
面试刷题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中使用到的设计模式为例剖析一下设计模式的使用以及带来的好处。

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

你可能感兴趣的文章
JSONPath小试牛刀之Snack3
查看>>
更强的 JsonPath 兼容性及性能测试
查看>>
利用 Solon-web 框架写一个 Hello World
查看>>
Solon Ioc 的注解对比Spring及JSR330
查看>>
Solon 1.2.12 发布,新的惊喜
查看>>
Java基础:HashMap中putAll方法的疑惑
查看>>
ESRI ArcGIS 产品线资源网站大集合
查看>>
ArcGIS API for JavaScript 4.2学习笔记[31] (补充学习)Task类
查看>>
ArcGIS API for JavaScript 入门教程[7] 再讲视图——View的基本属性
查看>>
solr 7.6 安装部署与遇到的问题
查看>>
MongoDB 常用的几大GUI工具
查看>>
Elasticsearch定时删除索引第二版
查看>>
systemd 启动 logstash 报错 找不到 JAVA_HOME
查看>>
nginx故障分析与记录
查看>>
Hello world
查看>>
[转] C++中的namespace
查看>>
[转] Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
查看>>
[转] C++项目中的extern "C" {}
查看>>
Vue.js 学习笔记之三:与服务器的数据交互
查看>>
一文读懂Java动态代理
查看>>