《2018年基于FP的DDD实践.pdf》由会员分享,可在线阅读,更多相关《2018年基于FP的DDD实践.pdf(43页珍藏版)》请在三个皮匠报告上搜索。
1、?FP?DDD?CONTENTS01DDD?FP02?03?DDD?FPDDD?FPCQRSUse CaseUser StoryDCIDomain EventEvent SourcingEvent StormingClean ArchitectureOnion ArchitectureTDDHexagonal ArchitectureMicroserviceOO?领域模型是为构建的种向领域的指性语义 选择某种编程范式就选定了构建领域模型的基础 程上需要考量哪种编程范式与领域语义的 gap 最 现代编程语基本都持多范式,程序员可以在局部灵活选择FP?DDD?业务场景:规则领域,计算领域 设计层次
2、:BC内建模,战术设计 建模元素:值对象,领域服务?1?UL?数:counting 三形:triangle 点:point 线:line 点的集合:points 线的集合:lines?counting trianglecountingtriangle?Pointtype Point=bytetype Line=string?Line?:3PointPointa,b,c?:3LineLineab,bc,acUL?数:counting 三形:triangle 点:point 线:line 点的集合:points 线的集合:lines 两点相连:connected 三点在同直线上:in_same_l
3、ine:not?counting trianglecountingtriangleconnectedin_same_linenotconneted&in_same_line?:connected(x,y)?in_same_line(x,y,z)n?lines?belong(points,lines):(Points,Line)-boolbelong?:connected(x,y)-belong(“xy”,lines)in_same_line(x,y,z)-belong(“xyz”,lines)UL?数:counting 三形:triangle 点:point 线:line 点的集合:point
4、s 线的集合:lines 两点相连:connected 三点在同直线上:in_same_line:not 属于:belong?counting trianglecountingtriangleconnectedin_same_linenotbelong?:points?linestype Points=stringpoints:=abcdefghijk lines:=Lineabh,acgi,adfj,aek,bcde,hgfe,hijk?:?UL?数:counting 三形:triangle 点:point 线:line 点的集合:points 线的集合:lines 两点相连:connect
5、ed 三点在同直线上:in_same_line:not 属于:belong 序集:subset遍历:traversal?counting trianglecountingtriangleconnectedin_same_linenotbelongsubsettranversalsubset(a,b,c)-“abc”Pointa,b,c-Points(Pointa,b,c)subset(points,n):(Points,int)-Points“abc”?subset(points,3)subset(points,n)when len(points)?subset(points,n)when l
6、en(points)=n-pointssubset(points,n)when n=1-points0,points1,.,pointslen(points)-1subset(points,n)-firsts=subset(points1:,n-1)with points0 lasts=subset(points1:,n)firsts append lasts?model?subset(points,3)?domain service?subset(points,3)?2?UL?数:counting 三形:triangle 点:point 线:line