• qinsi
    2021-01-16
    个人理解: * 链式调用不一定都是火车残骸。比如builder模式,每次调用返回的都是自身,不牵涉到其他对象,不违反迪米特法则。又比如java stream操作,应该就是文中提到的声明性的操作 * 构建模型还有一个好处是增加了一层抽象,屏蔽了外部的变化,类似防腐层的作用。比如写可移植的c代码用typedef定义内部使用的类型而非直接使用基本类型,或是DDD中领域内只处理本领域的对象,使用其他领域的对象要先经过转换而不会直接使用

    作者回复: 这个理解很到位。

    
    46
  • adang
    2021-01-16
    课程里讲的坏味道自己写的代码上都有,虽然知道不好,但是一直不知道应该怎样优化。没有好好系统地学习过软件设计,凭直觉感觉好或者不好,因为软件设计功底薄弱,明知道不好,却不知道怎样改进。几节课里,老师也一直在强调软件设计的重要性。发现自己确实需要系统的学习一下软件设计,好好扎扎马步,打实基本功了。

    作者回复: 欢迎加入《软件设计之美》

    共 2 条评论
    9
  • dev.bin
    2021-01-16
    今天说的我都干过,一直都没意识到,但总是觉得有许多重复的代码,看着别扭,能早点看到就好了

    作者回复: 早一天知道,早一天应用。

    共 2 条评论
    7
  • 克一
    2021-01-16
    请教老师个问题:Java 里的 JavaBean,用MyBatis Genarater或者Lombok生成都会有Setter方法,这样数据库查询或者接受参数时,数据自动映射到这个对象。如果不用setter的话,应该怎么赋值?

    作者回复: 其实,现在的数据库映射用的都是反射的方式实现,与setter关系不大。下一讲,我们就来说说setter。

    
    7
  • 里子的忧伤
    2021-01-20
    我设计了一个客hu模型,包含客hu基本信息(证jian类型,证jian号码,名称),个人信息(有些客hu是自然人,客hu不是用户),企业信息,联xi电话List,地址List(注册地址,经营地址,身份证地址),等等;个人信息、企业信息、联xi电话等都是懒加载,需要用到的时候get才执行查询。如果按照本节的说法,可能这种设计就有问题,但是不知道怎么解决

    作者回复: 先要分析这些模型之间的关系,如果它们是聚合和聚合根之间的关系,那就要一次性的拿出来,没有什么懒加载的问题。如果是组合关系,也许用不同的访问入口更合适。

    
    5
  • 邵俊达
    2021-08-10
    对这句话不太明白「使用一流的集合」,请问什么是一流的集合?

    作者回复: 简单的理解,就是语言直接提供的数据结构,比如:List、Map、Set 之类的

    共 2 条评论
    4
  • 里子的忧伤
    2021-03-22
    郑老师,我们实际开发中,每个模型都有对应的ModelService, service里专门负责该模型相关的业务逻辑,譬如某个Model有状态status字段, 如果单考虑模型封装,会在Model里写 激活 active(),取消 cancel(),冻结frozen(),实际状态set成什么service里完全不需要知道。但如果考虑service层就是写业务逻辑的,那Model只需要一个setStatus就行,他们还会觉得封装起来了service层还看不清了。

    作者回复: 这就取决于你模型希望暴露的是什么了,我倾向于暴露行为,而直接暴露状态倾向于暴露细节。行为容易保持一致性,状态如果后面扩充了,是不是所有人都要知道呢,这是个值得考虑的问题。

    
    4
  • AE86
    2021-01-20
    “根本的问题是缺乏对封装的理解,而一个好的封装是需要基于行为的,所以,如果把视角再提升一个角度,我们应该考虑的问题是类应该提供哪些行为,而非简简单单地把数据换一种形式呈现出来。” 文中提到的这句话,请问能有个较直观具体的例子么?个人感觉这句话很重要,但是理解稍有问题

    作者回复: 《软件设计之美》中,专门有一讲是关于封装的,你可以看一下,这里用的是结论。

    
    2
  • 岁月神偷
    2021-01-20
    这一章的讲解令人醍醐灌顶,尤其是利用模型解决基本类型偏执的问题讲解上,那个天天环绕在身边的坏味道竟然拨云见雾,感谢

    作者回复: 有收获,可转发😄

    
    2
  • Geek_3b1096
    2021-01-18
    "根本没有构建模型的意识"...说得就是我啊

    作者回复: 你现在有了。

    
    2