forked from iluwatar/java-design-patterns
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvertical-slice-architecture.urm.puml
125 lines (103 loc) · 2.77 KB
/
vertical-slice-architecture.urm.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
@startuml
package com.iluwatar.vertical-slice-architecture {
!define ENTITY class
!define SERVICE class
!define REPOSITORY class
!define VIEW class
package Customer {
ENTITY Customer {
+id: int
name: String
email: String
+getId(): int
+getName(): String
+getEmail(): String
+builder(): Builder
}
SERVICE CustomerService {
+createCustomer(name: String, email: String): Customer
+getCustomerById(id: int): Customer
+getAllCustomers(): List<Customer>
}
REPOSITORY CustomerRepository {
+save(customer: Customer): Customer
+findById(id: int): Optional<Customer>
+findAll(): List<Customer>
}
VIEW CustomerView {
-customerService: CustomerService
-LOGGER: logger
+render(): void
}
}
package Product {
ENTITY Product {
+id: int
name: String
price: double
+getId(): int
+getName(): String
+getPrice(): Double
+builder(): Builder
}
SERVICE ProductService {
+createProduct(name: String, price: double): Product
+getProductById(id: int): Product
+getAllProducts(): List<Product>
}
REPOSITORY ProductRepository {
+save(product: Product): Product
+findById(id: int): Optional<Product>
+findAll(): List<Product>
}
VIEW ProductView {
-productService: ProductService
-LOGGER: logger
+render(): void
}
}
package Order {
ENTITY Orders {
+id: int
customer: Customer
product: Product
+getId(): int
+getCustomer(): Customer
+getProduct(): Product
+builder(): Builder
}
SERVICE OrderService {
+createOrder(customer: Customer, product: Product): void
+getOrderById(id: int): Orders
+getOrdersByCustomer(customer: Customer): List<Orders>
}
REPOSITORY OrderRepository {
+save(order: Orders): Orders
+findById(id: int): Optional<Orders>
+findByCustomer(customer: Customer): List<Orders>
}
VIEW OrderView {
-orderService: OrderService
-LOGGER: logger
+render(customer: Customer): void
+showAllOrders(orders: List<Orders>): void
}
}
class App {
+initializeData(): void
+run(): void
}
Customer.Customer --> Customer.CustomerService
Customer.CustomerService --> Customer.CustomerRepository
Customer.CustomerService --> Customer.CustomerView
Product.Product --> Product.ProductService
Product.ProductService --> Product.ProductRepository
Product.ProductService --> Product.ProductView
Order.Orders --> Order.OrderService
Order.OrderService --> Order.OrderRepository
Order.OrderService --> Order.OrderView
App --> Customer.CustomerService
App --> Product.ProductService
App --> Order.OrderService
}
@enduml