-
Notifications
You must be signed in to change notification settings - Fork 5
Overview
Là layer chịu trách nhiệm cho việc định nghĩa các page
, route
, widget
và logic quản lý state của các page(BLoC).
Là layer chịu trách nhiệm định nghĩa các nghiệp vụ của ứng dụng trong đó:
Usecase(optional)
: sử dụng 2 hoặc nhiều repository để thực hiện 1 việc bất kỳ.
Repository
: định nghĩa các function
truy cập đến datasource
, đây phải là 1 asbtract class.
Ví dụ: chúng ta làm tính năng quản lý giỏ hàng (Cart
). Vậy ở CartPage
user có thể thao tác những gì liên quan đến Cart
?
Hãy định nghĩa hết tất cả trong 1 abstract class là CartRepository
. CartRepository
sẽ chỉ quan tâm là Bloc/UI
cần gì? thời điểm này chúng ta chưa quan tâm đến việc làm như nào? làm như nào sẽ được thực hiện ở tầng Data Layer thông qua 1 class là CartRepositoryImpl
sẽ bàn sau.
abstract class CartRepository {
Future<CartItemModel> addItem(ProductModel product);
Future removeItem(ProductModel product);
Future<List<CartItemModel>> getCart();
}
entity
: địng nghĩa các getter/setter của thuộc tính của đối tượng được mô tả theo design hoặc nghiệp vụ cần làm. đây phải là 1 abstract class
Ví dụ:
Đối với Product, theo design chúng chỉ cần quan tâm về productName
, productImage
, price
, salePrice
Như vậy hãy tạo 1 product_model
như sau :
abstract class ProductModel {
String get productName;
double get price;
double get salePrice;
String get productImage;
}
Đây là layer sẽ trực tiếp làm việc thao tác với API - Database. ở layer này sẽ có có 3 thành phần:
-
dto
chứa cácimplement
của model trong domain layer và các dto khác nhưrequest
,response
. -
datasource
chứa cácdatasource
củarepository
sẽ dùng nhưremote_data_source
(api_service
),local_data_source
. -
repository
Chứa các implement của repository trong domain layer.
Example: