问题现象:当docker将宿主机上的一个文件直接挂载到容器内时,在宿主机上修改该文件的内容后,在容器中看到该文件内容不变,或者容器中该文件不见了。
HTML中的properties和attributes有什么区别?
当写HTML代码时,你可以在你的HTML元素中定义attributes,然后浏览器解析你的代码并创建一个对应的DOM节点。这个节点是一个Object,因此它具有properties。
[译]应用 - 《Domain-Driven Design in PHP》第11章
本篇博文由本博客(
http://www.veitor.net)经原文翻译,转载请注明出处。
应用层是将领域模型与查询或修改其状态的客户端分离的地方。Application Service是这一层的构建块。正如Vaughn Vernon所说:“Application Service是领域模型的直接客户端”。你可以将Application Service看作为外部世界(HTML表单、API客户端、命令行、框架、UI等)与领域模型之间的联系点。思考一下你系统中向人们展示的最上层的use cases,这会对你有所帮助,例如:“以游客身份进行注册”、“以登陆者的身份购买产品”等等。
[译]仓储 - 《Domain-Driven Design in PHP》第10章
本篇博文由本博客(
http://www.veitor.net)经原文翻译,转载请注明出处。
为了与领域对象进行交互,你需要持有该对象的引用。实现这样的一种方式是通过创建对象来实现。或者,你可以贯穿关联,在面向对象编程中,对象持有与其他对象的引用,这使它们贯穿,从而有助于我们的模型的展现。但是,你需要有一种机制来获取第一个对象:聚合根。
[译]工厂 - 《Domain-Driven Design in PHP》第9章
本篇博文由本博客(
http://www.veitor.net)经原文翻译,转载请注明出处。
工厂是一个强有力的抽象。它们帮助客户端从如何与领域交互的细节中解耦出来。客户端不需要知道如何去构建一个复杂的对象和聚合,所以你可以使用工厂来创建整个聚合,从而让其具有不变性。
[译]聚合 - 《Domain-Driven Design in PHP》第8章
本篇博文由本博客(
http://www.veitor.net)经原文翻译,转载请注明出处。
聚合可能是领域驱动设计中最困难的构建块。它们很难理解,甚至难以正确设计。但是不用担心,我们在这里给你提供帮助。在进入聚合之前,我们需要先了解一些关键概念:事务和并发策略。
[译]服务 - 《Domain-Driven Design in PHP》第5章
本篇博文由本博客(
http://www.veitor.net)经原文翻译,转载请注明出处。
你已经了解了实体和值对象了。作为基本构建块,他们应该包含了任何应用的大部分业务逻辑。但是,在一些场景中值对象和实体并不是一个最好的解决方案。让我们看一下Eric Evans在他的《Domain-Driven Design: Tackling Complexity in the Heart of Software:》书中说的话:
当领域中的一个重要过程或转化不是实体或者值对象的自然职责时,增加一个操作作为一个单独的接口,此时该接口被声明为Service领域服务。根据模型的通用语言定义接口,并确保名称是通用语言中的一部分,是服务成为无状态。
[译]实体 - 《Domain-Driven Design in PHP》第4章
本篇博文由本博客(
http://www.veitor.net)经原文翻译,转载请注明出处。
我们已经讨论了先尝试将领域中的所有东西构建为Value Object的好处。但是当领域建模时,可能你会遇到这样的情况,通用语言中的一些概念需要有一些Identiy。
[译]值对象 - 《Domain-Driven Design in PHP》第3章
本篇博文由本博客(
http://www.veitor.net)经原文翻译,转载请注明出处。
通过使用self关键字,我们不会将”值对象”作为领域驱动设计的基本构建块,而是在代码中将它们作为你通用语言的概念。一个值对象在你的领域中不仅仅是一个东西,它能够度量、量化或者描述一些信息。值对象可以看作是小的简单对象(如金钱或者日期范围),它们不像实体(Entity)通过身份标识来进行区分,而是根据其所持有的内容来做区分。