Chúng tôi đang cố gắng di chuyển dữ liệu từ lớp Dịch vụ cồng kềnh của mình sang lớp Miền bằng cách sử dụng phương pháp DDD. Chúng tôi hiện có rất nhiều logic kinh doanh trong các dịch vụ của mình, được trải rộng khắp mọi nơi và không được hưởng lợi từ sự kế thừa.
Chúng tôi có một lớp Miền trung tâm, là trọng tâm của hầu hết công việc của chúng tôi - Giao dịch. Đối tượng Trade sẽ biết cách tự định giá, cách ước tính rủi ro, xác thực chính nó, v.v. Sau đó chúng ta có thể thay thế các điều kiện bằng đa hình. Ví dụ: SimpleTrade sẽ tự định giá theo một cách, nhưng ComplexTrade sẽ tự định giá theo cách khác.
Tuy nhiên, chúng tôi lo lắng rằng điều này sẽ làm nở (các) lớp Trade. Nó thực sự nên chịu trách nhiệm xử lý riêng nhưng quy mô lớp sẽ tăng theo cấp số nhân khi có thêm nhiều tính năng được thêm vào.
Vì vậy, chúng tôi có các lựa chọn:
- Đặt logic xử lý trong lớp Trade. Xử lý logic bây giờ là đa hình dựa trên loại giao dịch, nhưng lớp Trade hiện có nhiều phản hồi (giá cả, rủi ro, v.v.) và lớn
- Đặt logic xử lý vào lớp khác như TradePricingService. Không còn đa hình với cây thừa kế Trade, nhưng các lớp nhỏ hơn và dễ kiểm tra hơn.
Điều gì sẽ là cách tiếp cận được đề xuất?