zoukankan      html  css  js  c++  java
  • 面试刷题14:介绍一下你工作中用到的设计模式?

    image.png




    那些被时间沉淀下来的最贱时间,就是设计模式,它有利于提高沟通和设计的效率和质量。


    我是李福春,我在准备面试,今天的问题是:

    工作中你用到了哪些设计模式?


    **分析:**
    这个问题比较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中使用到的设计模式为例剖析一下设计模式的使用以及带来的好处。






    image.png

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

  • 相关阅读:
    双击返回 退出程序
    读取InputStream 中的内容
    wsgi服务器
    python 中的GIL
    json
    __getattr__
    错误类型
    __slot__用法
    获取属性以及基本方法
    linux IO
  • 原文地址:https://www.cnblogs.com/snidget/p/12574249.html
Copyright © 2011-2022 走看看