• zcc
    2020-07-17
    那从父类的角度来考虑的话,应该是定义一个几何图形的接口,接口有计算面积的方法。然后长方形、正方形、圆形、三角形……都实现这个接口,然后各自实现计算面积的方法。各自有自己特别的关键属性,根据属性计算各自面积:长*宽、边长²、πr²、(底长*高)/2、……

    作者回复: 嗯,这个解决方案的味道不错。

    
    21
  • Janenesome
    2020-10-23
    千万要遏制自己写 if 的念头,一旦开了这个头,后续的代码也将变得难以维护。刚好前段时间看到过一种说法:以多态应用为荣,以分支判断为耻。哈哈

    作者回复: 这个观点真好!

    
    17
  • Geek_3b1096
    2020-08-09
    时刻提醒自己: 千万要遏制写if的念头

    作者回复: 非常好的经验总结!

    
    11
  • 桃子-夏勇杰
    2020-07-29
    这个设计原则看着非常简单,提出者居然能获得图灵奖,可见这个设计原则的价值非常大。郑老师,这个设计原则的价值到底有多大呢?

    作者回复: LSP告诉我们什么样的继承是对的,而继承使用范围太广了。

    
    6
  • Janenesome
    2020-10-23
    郑老师给出的业务开发的案例真的挺接地气。 运行时类型识别我以前写过,后面回去维护的时候想打死自己,怎么写出这样的烂代码。 还有业务分析里的素材分类,太真实了,平时做需求时很多概念有点相似,放在一起好像也可以而且看起来还能省点力气,没有太深入思考的话就会放在一起了,一些差异化的部分就单独存或者用条件判断。

    作者回复: 今天“偷懒”,明天要付出更多。

    共 2 条评论
    4
  • monalisali
    2020-07-20
    RequestParser 中还是免不了用多个 if 来判断 identifier,从而返回特定的子类吧

    作者回复: 不一定,可以通过一个Map实现。

    共 5 条评论
    4
  • Being
    2020-07-18
    全篇一直在强调行为,我想这也是思考题的突破口。长宽是数据,而Rectangle并没有将行为抽象出来,导致Rectangle和Square不能成为IS-A的关系,我们只要把求面积的行为放在Rectangle下,子类分别去实现面积的方法就好了。

    作者回复: “把求面积的行为放在Rectangle下,子类分别去实现面积的方法”,可以解决这个问题吗?

    共 2 条评论
    4
  • 呆呆狗的兽
    2021-07-19
    lsp这一分享,很精髓也很精彩,is-a这个太重要了,遵循is-a会让系统越来越稳定且易拓展

    作者回复: 嗯,这个是关键的。

    
    2
  • Jxin
    2020-07-17
    如果业务场景合适,约束功能也不失为一个解决办法。让宽高不可变,初始化时就必须赋值。这样就能符合现实中的特性。自然也没有长宽赋不同值的麻烦。

    作者回复: setter 确实是一个有杀伤力的东西,但回避 setter并不是在解决我们提出的问题。

    
    2
  • BBQ
    2021-07-04
    关于不同客户的不同格式问题,我们单独开发了一套系统,在这个系统里面做接口格式映射,然后再调用标准接口。 由于这个系统的受众是实施人员,所以界面做到可以通过拖拽来实现映射。 当然实际功能更多,包括聚合,转换,以及enrich 功能 总之,把这个映射的关注点单独独立成了一个系统。

    作者回复: 如果有特定的需求,这么做是没有问题的

    
    1