继续学习DDD

记录:DDD不是架构而是一种思想,一种观察事物的角度。而六边形架构则是实现的一种架构。 过去程序员从数据结构,存储出发解决问题。而DDD提倡从业务角度去考虑问题。

架构

DDD风格的架构
https://www.cnblogs.com/davenkin/p/road-to-ddd.html

理解 Domain Model

理解 实体 Entity

https://cloud.tencent.com/developer/article/1790795

理解 仓库 Repository
https://cloud.tencent.com/developer/article/1803939

理解 值对象 Value Object

https://cloud.tencent.com/developer/article/1790794

理解 聚合 Aggregate

理解 六边形架构 Hexagonal Architecture

六边形架构是DDD是常用的一种架构信息,与其对标的是传统的分层模型和加入依赖反转的分层模型

第一次看到这个模型可能有点懵,六边形架构其实和以前的洋葱模型类似,要从信息的流动的角度来看。当信息流从六边形外部流入,经过边界,达到内部“领域模型”,经过处理,可能需要从六边形的另外一边存取数据(数据库,外部资源),流入或者流出。

和以前的分层模型相比(比如MVC),它强调的是系统“内外”之分,而不是内部的分层。当信息跨越边界(Port)的时候,需要又Adpater来适配。参考阅读1

比如信息从外部进入六边形的时候,把信息转成内部里理解的Request对象。

当信息流出六边形的时候,要转成外部颗理解的Response对象。

工厂

Application Service

Application Service 里的体现是实际业务中的每个用例额,场景,use case。在usease

参考

shopify的模板语言liquid

shopify使用了 liquid 作为自己模板语言。在我看来liquid是smarty的后继者。


Shopify的文档 (链接) (github)常用的对象(object) (cheat sheet)

github (链接

作品1 按照meta信息排序.

基本思路就是在循环显示之前,先循环一遍,把信息取出来后,单独保存到一个新的数组内。然后对这个数组进行排序。

{% assign newArray = false %}

{% for line_item in line_items %}
	{% assign newOrder = line_item.product.metafields.regalnummer.value  | default:'' %}
	{% assign matrix = newOrder | append:'.'  | append:forloop.index0 %}
	{% if newArray %}
		{% assign tmpIndex = matrix | split:',' %}
		{% assign newArray = newArray | concat:tmpIndex %}
	{% else %}
		{% assign newArray = matrix | split:',' %}
	{% endif %}
{% endfor %}

{% assign newArray = newArray | sort %}

显示的时候就按照这个新的数组进行循环

    {% for newArrayItem in newArray %}
     	{% assign i = newArrayItem | split:'.' | last | times: 1 %}
     	{% assign rowObj =line_items[i]  %} 
        <tr>
            <td>{{ rowObj.quantity }} x</td>
            <td>({{ rowObj.variant.inventory_quantity }})</td>
            <td>{{ rowObj.product.metafields.regalnummer.value }}</td>
            <td>{{ rowObj.variant.barcode }}</td>
<!--        <td>{{ rowObj.product.metafields.exp.value }}</td> -->
            <td>{{ rowObj.sku }}</td>
            <td>{{ rowObj.vendor }}</td>
            <td>{{ rowObj.title }}</td>
            <td style="text-align: right;">
                {{ rowObj.price | money }}</td>
    		<td style="text-align: right;">
    		    {{ rowObj.price | times:rowObj.quantity | money }}</td>
    		<td style="text-align: right;">
                {% assign a = rowObj.grams %}
                {% assign b = rowObj.quantity %}
                {{ a | times: b }}</td>
        </tr>
    {% endfor %}

最终效果

借了两只公猫

家里就不太平了。第一天两只公猫不知如何使用厕所,在客厅沙发,卧室地毯,厕所的猫马桶前留下五处猫屎和猫尿。我打扫了一个早上。

家里两只女猫对来访者特别反感。小黑一只在骂。姐姐就到处躲藏。两只公猫也知道自己是新来的,躲在床底下整个白天都不出来。

第二天还算太平。清晨公猫们找到了厕所进入的方法。但是还是不思饮食。还试图翻窗逃跑。女猫们则退守到阳台,死活不进屋。

看看第三天晚上会发生什么。

感染第8天

觉得自己应该转阴了。按流程明天才能去做快捡。自己今天在家先做一个。

结果是阳。不过花做了是阴,去快测点又做了一次,还是阴。拿到证明后就去音乐会了。