Title: 面向领域驱动设计 —— Domain Driver Design · Issue #14 · codingapi/springboot-framework · GitHub
Open Graph Title: 面向领域驱动设计 —— Domain Driver Design · Issue #14 · codingapi/springboot-framework
X Title: 面向领域驱动设计 —— Domain Driver Design · Issue #14 · codingapi/springboot-framework
Description: 业务模型即为类对象,通过对对象的封装实现对业务的封装,封装的原则就是单一责任。 业务的梳理,可区分业务的主线与支线。简化业务复杂度,增加业务的拓展性。 业务模型与数据持久化是松耦合的关系,他们之间更像是一种订阅关系 业务的拓展,可通过事件与消息模式解耦 事件与消息区别 事件:事件通常发生在程序系统内部,发生在进程的内部。事件订阅者与发起者可以不在同一个事务内,各个订阅者相对独立。 消息:消息队列通常是异步的,通常发生在不同的进程里。 可视化与UML,可视化是为了便于理解...
Open Graph Description: 业务模型即为类对象,通过对对象的封装实现对业务的封装,封装的原则就是单一责任。 业务的梳理,可区分业务的主线与支线。简化业务复杂度,增加业务的拓展性。 业务模型与数据持久化是松耦合的关系,他们之间更像是一种订阅关系 业务的拓展,可通过事件与消息模式解耦 事件与消息区别 事件:事件通常发生在程序系统内部,发生在进程的内部。事件订阅者与发起者可以不在同一个事务内,各个订阅者相对独立。 消息:消息...
X Description: 业务模型即为类对象,通过对对象的封装实现对业务的封装,封装的原则就是单一责任。 业务的梳理,可区分业务的主线与支线。简化业务复杂度,增加业务的拓展性。 业务模型与数据持久化是松耦合的关系,他们之间更像是一种订阅关系 业务的拓展,可通过事件与消息模式解耦 事件与消息区别 事件:事件通常发生在程序系统内部,发生在进程的内部。事件订阅者与发起者可以不在同一个事务内,各个订阅者相对独立。 消息:消息...
Opengraph URL: https://github.com/codingapi/springboot-framework/issues/14
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"面向领域驱动设计 —— Domain Driver Design","articleBody":"- 业务模型即为类对象,通过对对象的封装实现对业务的封装,封装的原则就是单一责任。\r\n- 业务的梳理,可区分业务的主线与支线。简化业务复杂度,增加业务的拓展性。\r\n- 业务模型与数据持久化是松耦合的关系,他们之间更像是一种订阅关系\r\n- 业务的拓展,可通过事件与消息模式解耦\r\n - 事件与消息区别\r\n - 事件:事件通常发生在程序系统内部,发生在进程的内部。事件订阅者与发起者可以不在同一个事务内,各个订阅者相对独立。\r\n - 消息:消息队列通常是异步的,通常发生在不同的进程里。\r\n- 可视化与UML,可视化是为了便于理解,为了进一步的优化模型\r\n- 防腐层与Repository的区别,他们都采用接口隔离设计,防腐层是对其他模块防腐,更像是一种提供API的能力,而Repository是内部防腐,其实是隔离业务模型与基础设施的一种抽象。\r\n\r\n业务分类:\r\n\r\n1. 主动业务,业务由自己可控,例如自己有一个订单对象,你通过订单对象可以完成对订单的创建与变更。\r\n2. 被动业务,业务的控制是由其他资源控制的,例如同样是订单的操作,但是你需要调用其他服务的api实现,而不是由自己的业务来实现。\r\n\r\nPS:\r\n 针对这两种业务,是都可以实现业务模型的自控的。这里主要讨论的是被动业务模式,在这种情况下开发的过程中,容易被第三方的提供能力所束缚,例如受限于他提供的接口顺序与字段要求,容易让自己的业务模型变成了调用服务的工具类,从而失去了模型的意义。对应这样的场景,提供两个建议: \r\n 1,我们可以把第三方服务看做成数据库服务,这样你的业务模型与第三方服务交互的过程就变成了是由Repository完成的持久化过程了。 \r\n 2,为了应对第三方服务层面的设计(如接口顺序、字段限制)问题影响到业务模型,可以在第三方服务的基础设施上做适配器,不要让第三方服务的设计问题腐蚀到你的业务模型。 ","author":{"url":"https://github.com/xlorne","@type":"Person","name":"xlorne"},"datePublished":"2022-07-21T06:44:19.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/14/springboot-framework/issues/14"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:8429f464-c8e2-190b-a667-89f93b4133d9 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C82C:23F8A8:33E3FE5:456568A:697069B1 |
| html-safe-nonce | 4560878480fa8a48582c667ac80eac7a8ec816475e09228544a9304b86da2417 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDODJDOjIzRjhBODozM0UzRkU1OjQ1NjU2OEE6Njk3MDY5QjEiLCJ2aXNpdG9yX2lkIjoiNjM4NDgwMTA1MTQ1MzcxMjgxNyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | e369f001e5e594616e67c9ab0cb6ab1b80a1ac5d4a72d096eaed95d00f377fb6 |
| hovercard-subject-tag | issue:1312741414 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/codingapi/springboot-framework/14/issue_layout |
| twitter:image | https://opengraph.githubassets.com/ed703856154281d1888d69fb89a2226defe4a1c208e83442ab6dfdbb9c9a2346/codingapi/springboot-framework/issues/14 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/ed703856154281d1888d69fb89a2226defe4a1c208e83442ab6dfdbb9c9a2346/codingapi/springboot-framework/issues/14 |
| og:image:alt | 业务模型即为类对象,通过对对象的封装实现对业务的封装,封装的原则就是单一责任。 业务的梳理,可区分业务的主线与支线。简化业务复杂度,增加业务的拓展性。 业务模型与数据持久化是松耦合的关系,他们之间更像是一种订阅关系 业务的拓展,可通过事件与消息模式解耦 事件与消息区别 事件:事件通常发生在程序系统内部,发生在进程的内部。事件订阅者与发起者可以不在同一个事务内,各个订阅者相对独立。 消息:消息... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | xlorne |
| hostname | github.com |
| expected-hostname | github.com |
| None | 9920a62ba22d06470388e2904804fb7e5ec51c9e35f81784e9191394c74b2bd2 |
| turbo-cache-control | no-preview |
| go-import | github.com/codingapi/springboot-framework git https://github.com/codingapi/springboot-framework.git |
| octolytics-dimension-user_id | 33536761 |
| octolytics-dimension-user_login | codingapi |
| octolytics-dimension-repository_id | 401886889 |
| octolytics-dimension-repository_nwo | codingapi/springboot-framework |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 401886889 |
| octolytics-dimension-repository_network_root_nwo | codingapi/springboot-framework |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7d6181066430cc06553c8396ca201e194ae33cb9 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width