Vì vậy, tôi đang viết một trò chơi và tôi đã đi qua một câu hỏi hóc búa nơi tôi tin rằng Reflection có thể là một giải pháp tốt hơn. Nhưng biết rằng Reflection không được khuyến khích và giải pháp khác của tôi trông không đẹp, tôi nghĩ tôi sẽ hỏi ở đây và xem cái gì thực sự là ý tưởng hay hơn trong kịch bản này.Tôi có thể làm điều đó đơn giản hơn nhiều với Reflection. Tôi có nên không?
Về cơ bản tôi có một lớp thẻ trừu tượng và sẽ có một số triển khai của nó. Tôi có một trường hợp mà tôi được cho một tên thẻ và cần phải xây dựng một đối tượng của nó, chỉ cần đưa ra tên.
Tôi biết tôi có thể sử dụng một trong hai cách:
a) Phản ánh và sử dụng choName và gọi. Nó sẽ là mã rất ngắn, có quy mô tốt và đủ dễ viết. Điều đó nói rằng, đó là Reflection, và tôi là tất cả để tránh nó khi tôi không đặc biệt cần nó.
b) Sử dụng mẫu thiết kế của Nhà máy và sau đó có kiểm tra có điều kiện khổng lồ, gọi cho lớp thích hợp dựa trên tên tôi cung cấp. Nó không khó để viết nhưng yêu cầu bảo trì liên tục và sẽ mất một thời gian để viết, cộng với nó sẽ không quy mô tốt. Điều đó nói rằng, đó là một giải pháp không phản chiếu.
Vậy giải pháp lý tưởng là gì? Tôi chỉ sử dụng Reflection vì nó giữ mã của tôi đẹp và ngắn?
Phản ánh! Phản ánh! Phản ánh! –
Sở thích cá nhân là "B". Nó thường là lựa chọn an toàn hơn và cho phép giải pháp có thể cấu hình (bạn có thể tải một 'Bản đồ' của các tên từ một tệp tương ứng với lớp cần được khởi tạo ví dụ). Bất cứ lúc nào bạn nghĩ phản ánh là câu trả lời đúng, bạn có vấn đề với thiết kế của mình. Tôi nói điều này khi tôi sử dụng sự phản chiếu ở một vài nơi và luôn tìm cách để giảm bớt nó ... 'Class.forName' không nhất thiết phải phản ánh;) – MadProgrammer
Tại sao không sử dụng mẫu thiết kế Nhà máy, và bắt đầu với phản xạ của bạn thực hiện. Bản thân tôi có thể xem xét một thiết kế dựa trên một [Prototype] (http://en.wikipedia.org/wiki/Prototype_pattern) bản thân mình (kể từ khi một boong có một số lượng hạn chế của thẻ/phù hợp). –