Hiện tại đang thực hiện một số đánh giá mã về nội dung được chuyển từ một nhóm khác và có một nghi ngờ về việc áp dụng SRP và mối quan hệ của nó với mô hình miền thiếu hoặc giàu (theo định nghĩa của Martin Fowler). Khái niệm mô hình miền phong phú là có đối tượng thông minh không chỉ có thể thiết lập/nhận các thuộc tính của chúng mà còn có thể thực hiện một số logic kinh doanh phức tạp hơn. Tôi tự hỏi làm thế nào nó phù hợp với SRP?Nguyên tắc về trách nhiệm một đơn liên quan đến mô hình miền thiếu/giàu có như thế nào?
Giả sử tôi có lớp mô hình của mình có một số thuộc tính có thể hiển thị các đạo cụ đó và cung cấp một số tính toán đơn giản về tính thích hợp của nó. Yêu cầu tiếp theo là phải có khả năng lưu trữ đối tượng dữ liệu này trong một số đối tượng lưu trữ mà không phải là dưới sự kiểm soát của tôi, như thế này: Phương pháp
class MyObject {
// get set
// parse sth
}
Store trong lưu trữ
storage.store(key, object);
Không nó vi phạm SRP nếu MyObject có phương pháp lưu trữ như thế này
public void store(Storage storage) {
storage.store('keyOne', fieldOne);
storage.store('keyTwo', fieldTwo);
}
Từ pov của đối tượng này, bạn nên lưu trữ trạng thái của nó. cách khác có thể là để giới thiệu loại dịch vụ ở đây và làm điều này như thế:
public StorageService {
private Storage;
// constructor here
....
public void store(MyObject myobj);
}
Bạn có thể chỉ cho tôi bất kỳ liên kết Tôi có thể đọc về vấn đề này? Tôi đã tìm thấy một thread trên SO ở đây nhưng nó không trả lời câu hỏi của tôi hoàn toàn.
Cách giải quyết trong DDD? Các mô hình trong DDD theo định nghĩa phong phú và có thể được xem là có quá nhiều trách nhiệm.
Đó có thể là giải thích quá mức về SRP. Bỏ qua chú Bob và đi tìm "sự gắn kết". –
Như đã lưu ý trong câu trả lời của tôi, nếu Bộ lưu trữ ổn định và trừu tượng (ví dụ, một số giao diện JSON, XML, RDB chuẩn) thì IMO, hoàn toàn không có vấn đề gì cho sự gắn kết và đưa nó vào mô hình miền. – user949300