Vì vậy, tôi quyết định sử dụng Mẫu thiết kế nhà máy cùng với Injection phụ thuộc.Quá nhiều cấu trúc đối tượng cho khuôn mẫu phụ thuộc/Mô hình kế thừa kế thừa
class ClassA
{
Object *a, *b, *c;
public:
ClassA(Object *a, Object *b, Object *c) :
a(a), b(b), c(c) {}
};
class ClassB : public ClassA
{
Object *d, *e, *f;
public:
ClassB(Object *a, Object *b, Object *c, Object *d, Object *e, Object *f) :
ClassA(a, b, c), d(d), e(e), f(f) {}
};
Bây giờ, vấn đề là lớpB có quá nhiều đối số cho hàm tạo. Đây là một ví dụ lớp thừa kế đơn, nhưng khi các lớp thừa kế bắt đầu nhận sâu hơn, và khi mỗi lớp lớp cần nhiều đối tượng được xây dựng, hàm tạo trong lớp trên cùng kết thúc đòi hỏi quá nhiều đối số để được tạo!
Tôi biết tôi có thể sử dụng setters thay vì constructor, nhưng có cách nào khác không?
Cách tiếp cận chung của tôi là tránh thừa kế càng nhiều càng tốt, và cố gắng giữ cho mỗi lớp tập trung vào một trách nhiệm duy nhất. Bạn có thể xây dựng 'ClassA' một cách riêng biệt, và sau đó khởi tạo' ClassB' với một tham chiếu đến đó, chứ không phải là kết nối chặt chẽ chúng thông qua kế thừa? –
Mike Seymour là đúng. Ưu tiên mối quan hệ (thành phần) có mối quan hệ chặt chẽ hơn là một mối quan hệ (thừa kế). Có lẽ nếu bạn giải thích những gì bạn muốn làm, chúng tôi có thể cho bạn biết làm thế nào tốt hơn để thực hiện nó? – metal
Tôi không thấy bất kỳ vấn đề lớn với thừa kế. Nó nên được sử dụng ở mọi nơi cần thiết. Nó không nên lạm dụng như mọi thứ khác. –