V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Edwards
V2EX  ›  问与答

各位在写代码的时候用设计模式用的多么。

  •  
  •   Edwards · 2019-11-10 19:32:33 +08:00 · 2403 次点击
    这是一个创建于 1834 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在看设计模式,看完一部分,然后不太清楚这些东西的应用场景。

    所以想问一下老哥们你们是怎么用的。

    9 条回复    2019-11-11 09:36:05 +08:00
    taotaodaddy
        1
    taotaodaddy  
       2019-11-10 20:36:25 +08:00 via Android
    策略模式用的比较多一些
    araaaa
        2
    araaaa  
       2019-11-10 20:46:13 +08:00 via iPhone
    框架代码用设计模式
    a591826944
        3
    a591826944  
       2019-11-10 20:47:27 +08:00   ❤️ 1
    这玩意是药。有病再用也不迟
    ayase252
        4
    ayase252  
       2019-11-10 20:58:25 +08:00
    ....和重构一起看
    wangkun025
        5
    wangkun025  
       2019-11-10 21:20:25 +08:00
    野生的,完全不懂
    oneisall8955
        6
    oneisall8955  
       2019-11-10 21:22:31 +08:00 via Android   ❤️ 2
    单例,策略,工厂模式也用到过。大部分时候写业务代码没用上。

    设计模式的东西,是要配合上业务场景,需要把代码写活,扩展性好才用吧,并不是为了用而用。

    除了架构层次的活,一般的业务代码一开始都不是有模式的,是慢慢的进化需要用上的。又或者有经验的工程师,比较有前瞻布局,一开始就分析以后业务场景可能会用上才用,不然都不知道用哪些模式比较好。

    而且很多时候,不是一种模式就能解决问题的,需要多种模式配合起来一起使用,那时候你用到的模式出现形式极有可能不是 23 种设计模式的一种,但这恰恰能很灵活的写活你的代码。

    一种设计模式的实现并不是只有这一种写法,要结合场景,实现符合当下的就是对的。把代码写活了就是好的,你可以说他是一种模式,也可以不是一种模式,反正他就在那。

    学习的时候,可以一点一点学,到需要的时候,就情不自禁用上了。不知道什么时候要用?最近极客时间有个课程有别人推,说设计模式的配合真实场景的,不知道含金量如何,有需要看一下也不错吧。反正我没买,感觉还不如看多点优秀别人写的源代码。
    linde
        7
    linde  
       2019-11-10 21:46:44 +08:00
    很多时候其实你已经用上设计模式了,可能你自己不知道。
    ClericPy
        8
    ClericPy  
       2019-11-10 22:23:13 +08:00   ❤️ 1
    就像 7 楼说的, 很多设计模式其实就是在遇到特定问题时候的一种"貌似最优"的解法, 如果代码写个四五年, 很多模式在解决问题的时候自动就掌握了. 而设计模式也不是无用, 因为它把最常见(而且杀伤力还很大)的问题进行了归类和总结, 给出了一个最实用的解决方案, 等于是一种变相的攻略秘籍.

    总结: 前期不要太纠结用什么模式, 多丰富一下经验, 不断试错过程中脑海中会自然冒出这些答案, 掌握好代码匠气的一个度即可.

    PS: 如果语言学的多了, 你会发现好多模式其实是为了解决 java 独有的问题而给出的方案, 有的语言甚至语法层面就避开了好多问题...
    12tall
        9
    12tall  
       2019-11-11 09:36:05 +08:00
    不要刻意用,不然会弄巧成拙~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   854 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:46 · PVG 05:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.