Tôi có một thùng chứa một loạt các con trỏ đến một lớp cơ sở và một hàm lấy một số đầu vào và trả về một lớp là lớp con của lớp cơ sở. Lớp con nào nó trả về phụ thuộc vào đầu vào.Báo cáo chuyển mạch khổng lồ cho các nhà xây dựng
Ngay bây giờ, tôi có một câu lệnh switch khổng lồ như thế này:
class Base { ... }
class A : public Base { ... }
class B : public Base { ... }
...
class Z : public Base { ... }
Base* depends(int input) {
switch (input) {
case 1:
return new A(...);
case 2:
return new B(...);
...
case 26:
return new Z(...);
default:
...
}
}
tôi đã tự hỏi nếu có bất kỳ cách nào tốt hơn để thiết kế này. Tôi không biết nhiều "mẫu thiết kế" (tôi nghĩ đó là những gì họ được gọi) vì vậy tôi không biết nếu có một (rõ ràng) cách tốt hơn để thiết kế này.
Thật tuyệt vời khi có từ điển ánh xạ khóa của bạn tới các lớp hoặc tên lớp (hoặc chỉ một mảng nếu khóa của bạn là int). Nhưng điều này có thể? Xem câu hỏi tương tự: http://stackoverflow.com/questions/582331/c-is-there-a-way-to-instantiate-objects-from-a-string-holding-their-class-name –
@Ray cảm ơn đối với liên kết, câu hỏi đó rất giống với câu hỏi của tôi, và câu trả lời khá nhiều cho câu hỏi. –