Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Định nghĩa sơ lược về pattern #13

Open
tuananhhedspibk opened this issue Jul 18, 2021 · 0 comments
Open

Định nghĩa sơ lược về pattern #13

tuananhhedspibk opened this issue Jul 18, 2021 · 0 comments
Labels

Comments

@tuananhhedspibk
Copy link
Owner

  • Value-object: Nó sẽ là lớp bao lấy các kiểu giá trị nguyên thuỷ của ngôn ngữ lập trình, chúng bất biến (immutable) và KHÔNG CÓ ID, nếu với các giá trị có sự liên quan chặt chẽ tới nhau thì Value-object có thể có nhiều thuộc tính giá trị trong đó
    VD: Với string --> String-Value-Object class, class này sẽ có các phương thức phụ trợ (concat, ....). String-Value-Object sẽ có các thuộc tính {firstName: string, lastName: string}
  • Entity: có thuộc tính ID để định danh và là mutable
  • Aggregate: là tập hợp của EntityValue-object. Ta có khái niệm Aggregate root, từ bên ngoài, các thao tác sẽ chỉ tác động đến root entity này mà thôi. Lấy ví dụ như: Entity "Order", bên trong có "OrderDetail". Khi bên ngoài muốn thao tác (thay đổi, update) lên "Order" thì chỉ có "Order" bị tác động, "OrderDetail" sẽ không bị tác động

10776_001_s

  • Repository: sẽ là nơi thực hiện "Lấy về", "Lưu trữ" các Aggregates, Entities. Trên thực tế, đây sẽ là nơi tương tác trực tiếp với DB, cũng như API bên ngoài. Trong tầng domain, các repositories sẽ được viết dưới dạng interface, phần triển khai sẽ do infrastructure đảm nhận

  • Domain service: sẽ là nơi viết các logic xử lí không liên quan đến Aggregate, Entity, Value-object. VD: kiểm tra tính unique của user id.

Ref: https://codezine.jp/article/detail/10776
https://qiita.com/tarokamikaze/items/d368e31edefc6a705625

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant