美文网首页
突然理解了程序设计中的变化方向这个词

突然理解了程序设计中的变化方向这个词

作者: FinaLone | 来源:发表于2020-12-09 22:00 被阅读0次

    以前听别人分享,在讲设计模式时提到过变化方向这个词。
    意思是,在构思模式时,需要首先看清楚程序已经存在以及可能存在的变化方向,使用合适的设计模式将这些变化方向解藕。
    原来听的时候迷迷糊糊,如何定义变化方向,怎么识别可能的变化方向。

    今天突然好像明白了。
    我们不提设计模式怎么解藕变化方向,先解决变化方向是什么。

    • 假如程序中有一个很简单的获取时间的功能GetTime, 那它不需要设计模式介入。
    • 过了一个月, 小明向GetTime功能中添加了一个逻辑,根据区域获取不同的时区时间:
    if (zone=’CN')
      time += 8h;
    
    • 这就是一个变化方向,将时区这个变化方向和获取时间耦合在了一起。
    • 又过了一个月,小刚向GetTime功能中添加了一个逻辑,有些人想获取10分钟后的时间(可能是想督促自己早点干完活:)):
    if (needDelay)
      time += 10m;
    
    • 这又是一个变化方向,将延迟时间这个变化和获取时间耦合在一起。

    • 现在GetTime这个函数不简单了,里面包含了怎么区分时区,怎么区分延迟。每新增一种时区或者新增一种延迟,都需要考虑对另一个变化方向的波及,并且可能需要重复多份代码。我们的代码就是这样一点一点变得长而丑陋。

    • 要解决这个问题, 就要将zone和needDelay这两个变化方向对GetTime隐藏起来。可以在初始化每个实例的时候,给它不同的GetTime实现,而对每一个实例而言,它看到的只是简单的一个GetTime,并不知道底层怎么处理区域,怎么处理延迟等等。

    我的突然的一点想法,不知道大家能不能理解。。。。

    相关文章

      网友评论

          本文标题:突然理解了程序设计中的变化方向这个词

          本文链接:https://www.haomeiwen.com/subject/qkykgktx.html