2013-07-23 60 views
8

Dựa trênthực hành tốt nhất Android cho vấn đề cấu trúc gói

tôi đã thực hiện các cấu trúc gói Android sau:

  • com.company.product.activities

  • com.company.product.database

  • com.company.product.fragments

  • com.company.product.fragments.adapters

  • com.company.product.models

Nhưng đôi khi, theo yêu cầu tôi cần phải hav e một bộ điều hợp cho hộp thoại tùy chỉnh.

Tôi nên đặt thông tin này ở đâu? Bởi vì nó là một bộ điều hợp nhỏ, nó chủ yếu được sử dụng trong một hoạt động trong một hộp thoại, với các hoạt động phản ánh trở lại hoạt động.

vấn đề phải đối mặt là:

  1. Quá nhiều ngữ cảnh (Hoạt động) tham chiếu được truyền cho các bộ chuyển đổi.

  2. Tất cả các phương thức kết thúc công khai, vi phạm khái niệm OOP về ẩn chi tiết triển khai.

  3. Cần bao nhiêu sự khác biệt để có bộ điều hợp riêng cùng với cấu trúc bao bì? Đây có phải là phương pháp chuẩn cho cấu trúc gói dự án Android không?

Trả lời

7

Tôi sẽ đặt bộ điều hợp trong gói adapters. Ngay cả khi it is small adapter, mostly its to be used within a activity in a dialog, with operations reflecting back to activity bạn sẽ không bao giờ biết bộ điều hợp đó sẽ phát triển như thế nào và trong trường hợp nào nó sẽ được sử dụng.

Về mối quan tâm của bạn:

  1. Too much of context references - Mỗi thể hiện của bộ chuyển đổi của bạn sẽ có một single Context để tham khảo. Miễn là bạn không bị rò rỉ bất cứ điều gì từ bộ chuyển đổi của bạn, thì đây không phải là một vấn đề. Bạn cũng có thể có bộ điều hợp này được mở rộng bởi các triển khai khác và điều đó cũng sẽ áp dụng cho việc triển khai đó.
  2. All methods end up public, which fails the OOP's concept of hiding implementation details. Miễn là bạn đang gọi bộ điều hợp từ ứng dụng của bạn (luôn luôn là trường hợp) và bạn không xây dựng một SDK, thì tôi thực sự không thấy vấn đề. Nếu bạn lo lắng về các phương pháp hay nhất của OOP, tôi sẽ lo lắng về việc tôn trọng bộ điều hợp Single Responsibility Principle: không để bộ điều hợp làm nhiều hơn hiển thị dữ liệu đã cho.
  3. Xem xét khả năng sử dụng lại, tôi không muốn có bộ điều hợp với tư cách thành viên riêng tư (tĩnh hoặc không). Để thêm nhiều hơn, có một số best practice không khuyến khích sử dụng quyền truy cập private khi bạn đang xử lý việc gọi số private từ các lớp bên trong.

Vì vậy, để kết thúc, xem xét khả năng sử dụng lại, Single Responsibility và bài viết thực hành tốt nhất, tôi ủng hộ hoặc tách adapters cho các lớp học chuyên dụng.

+0

ok, nhận được điểm của bạn, nhưng trên bộ điều hợp mỗi chế độ xem mục (ví dụ: imageview), hãy bỏ qua hộp thoại tương ứng hoặc ở nơi cần xử lý nguyên nhân đó ngay bây giờ, cần loại bỏ hộp thoại –

+0

. mô hình được mô tả trong Fragments: định nghĩa một giao diện tĩnh trong bộ điều hợp chịu trách nhiệm hiển thị/loại bỏ hộp thoại và bản thân việc thực hiện (hiển thị và loại bỏ thực tế 'DialogFragment') có thể được thực hiện trong hoạt động hoặc đoạn của cha mẹ. Bạn có thể truyền một thể hiện cho đối tượng đó, hoặc ép buộc một lớp-cast trên bộ tạo bộ điều hợp. Điều này tôn trọng tất cả 3 tuyên bố trên của tôi. – gunar

+0

cảm ơn bạn đã xác nhận rằng, muốn làm như vậy, nhưng không chắc chắn –