use*_*291 1 domain-driven-design
来自DDD:解决软件核心的复杂性(第268页):
如果实现者具有在计算中使用的状态,那么实现者实际上是操作的参数,因此参数和返回值应该与实现者的类型相同.这种操作在该类型的实例集合下关闭.
a)我理解制作参数,返回值和相同类型的实现者会简化对操作的解释,但是作者建议尽管从概念上讲它对参数更有意义并且返回值不是同一类型(比方说ImplType)作为实施者,我们仍然应该试图强迫它们ImplType,即使这意味着我们必须牺牲一点概念清晰度?
b)我的想法是,如果对于论证更有意义并且返回值是类型的ImplType,那么我们就已经定义了它们,即使我们对操作的关闭及其好处一无所知.难道我们最初使它们成为不同类型的事实不应该表明它在概念上更好,它们不属于类型ImplType吗?
谢谢
eul*_*rfx 12
我认为关于操作关闭的关键引用是:
在适合的地方,定义一个返回类型与其参数类型相同的操作.
这个想法是关闭操作对行为建立了一些理想的限制,但它应该适用于适合的地方.关于将状态视为操作参数的实现者的声明基于如何实现OOP.在后台,运行时将初始化的此参数传递给所有类方法.这样,实现操作的每个方法都可以看作是接受实现类型作为第一个参数的静态方法.以这种方式查看操作会尝试使所有内容显式化,从而减少依赖性.
关闭操作的概念特别借鉴了数学,抽象代数和群论.在数学中,作为纯粹的声明性模型,这个原则的应用程序远远多于企业开发中的应用程序,但是我们仍然可以从中获得一些好处.