Có ổn không khi có nhiều lớp Trừu tượng trong ứng dụng của bạn?


9

Ban đầu, chúng tôi muốn triển khai một mẫu Chiến lược với việc triển khai các phương thức khác nhau trong giao diện commmon. Chúng sẽ được chọn trong thời gian chạy dựa trên đầu vào của người dùng.

Khi nó bật ra, chúng ta đang có các lớp Trừu tượng triển khai 3 - 5 phương thức phổ biếnchỉ còn một phương thức để thực hiện khác nhau, đó là Chiến lược.

Cập nhật: Theo nhiều lớp trừu tượng, ý tôi là có 6 chức năng cấp cao khác nhau, tức là 6 gói và mỗi gói có Giao diện + Tóm tắt + (loạt Impl thực tế).

Đây có phải là một thiết kế xấu trong bất kỳ cách nào?

Bất kỳ quan điểm tiêu cực nào về khả năng mở rộng sau này - Tôi đang chuẩn bị đánh giá mã / thiết kế với người cao niên.

Câu trả lời:


8

Không, đây không phải là một thiết kế xấu. Đó là một mẫu phương thức mẫu .

Nó có nghĩa là gói gọn hành vi khác nhau của một bước thuật toán, có lẽ là trường hợp trong kịch bản của bạn. Chiến lược và các mẫu phương thức mẫu tạo nên sự kết hợp mạnh mẽ trong nhiều trường hợp. Bạn có thể có các chiến lược trừu tượng như một khung và sử dụng mẫu phương thức mẫu cho các chiến lược cụ thể. Điều đó khá sạch sẽ.

Nó có thể mở rộng và bạn cũng không cần lặp lại mã. Khi bạn cần một cái gì đó hoàn toàn khác, chỉ cần sử dụng giao diện chiến lược để tạo ra một chiến lược trừu tượng hoặc cụ thể mới.


4

Không, nó có thể khá OK (tùy thuộc vào chi tiết - thật khó để nói nhiều hơn với kiến ​​thức nhỏ này về trường hợp cụ thể của bạn). Hoàn toàn tốt khi thống nhất các triển khai phương thức phổ biến trong một lớp cơ sở trừu tượng.

Tùy thuộc vào cách sử dụng phương thức trừu tượng duy nhất trong các lớp của bạn, mẫu này có thể là phương thức Mẫu thay vì Chiến lược . Cụ thể, nếu nó được gọi bởi một số phương thức khác, cuối cùng trong lớp cơ sở, thay vì trực tiếp bởi thế giới bên ngoài.


1

Mẫu Phương thức Mẫu tạo lớp con để triển khai mã đặc biệt bằng phương thức trừu tượng và lớp con kế thừa phương thức chung từ siêu lớp. Vì vậy, tôi không nghĩ rằng nó có nhiều lớp Trừu tượng, nó chỉ là một lớp Trừu tượng, tất cả các lớp con là lớp thể hiện.


0

Nếu các lớp trừu tượng đang bắt chước các phương thức giống nhau, với cùng một nội dung thì tại sao lại có nhiều lớp trừu tượng?

Nếu họ đang áp dụng các phương pháp khác nhau thì tôi không thấy vấn đề gì.

Để cải thiện khả năng mở rộng sử dụng các giao diện, thì sẽ ít vấn đề hơn nếu sau đó bạn loại bỏ lớp trừu tượng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.