2010-10-18 31 views
8

Tôi đang phát triển một ứng dụng dựa trên swing, nơi tôi đang sử dụng nhiều FileDialogs? Vì vậy, tôi nói tại sao không để làm cho chỉ một đối tượng FileDialog thay vì tất cả các trường hợp này và sử dụng nó trong toàn bộ dự án? Đây có phải là một giả định tốt? điều này có bất kỳ cải tiến hiệu suất nào không?Tôi có nên triển khai Hộp thoại Tệp là Singleton không?

Cảm ơn

Trả lời

8

Đây là ví dụ tuyệt vời về trường hợp sử dụng khi hiệu suất ứng dụng không thực sự quan trọng và câu hỏi thực sự rơi vào lớp tối ưu hóa sớm về giải quyết vấn đề. Tại sao? Sử dụng FileDialog có nghĩa là bạn đang tương tác với người dùng, ngay cả khi có tay nghề cao ngoài kỹ năng với phím tắt Kung Fu, sẽ có nhiều đơn đặt hàng có cường độ chậm hơn so với ứng dụng. Có bao nhiêu FileDialogs có thể mở nhanh, sử dụng và đóng trong một phút? Nói một chục. Bạn không cần phải quan tâm đến một tá đồ vật đến và đi trong một phút. Không nên xuất hiện trên radar của bạn. Sử dụng năng lượng của bạn ở nơi khác. Trong thực tế, bạn nên tạo một đối tượng mới mỗi lần và tránh bất kỳ sự đau đầu bộ nhớ đệm nào.

+0

+1 rất độc đáo được nói và điểm mạnh với tối ưu hóa sớm. – chiccodoro

3

Tôi sẽ làm cho một lớp FileDialog tĩnh mà tạo ra một trường hợp mới của FileDialog mỗi lần một cái mới cần mở chứ không phải chia sẻ một ví dụ Singleton trên ứng dụng.

Điều đó sẽ giúp bạn tránh đau đầu khi cố gắng tìm hiểu xem bạn đang đọc đúng đường dẫn từ hộp thoại hay ai đó đã mở hộp thoại và chọn một đường dẫn mới và bây giờ bạn đang tham chiếu đường dẫn mới đó so với đường dẫn đã chọn ban đầu, v.v ...

1

Tại sao triển khai dưới dạng Singleton? Bạn có thực sự xác minh rằng việc hiển thị hai hộp thoại tập tin sẽ không bao giờ xảy ra?

Tốt hơn để có nó như một lớp thông thường; bạn không muốn xây dựng trong những hạn chế mà có thể trở thành điểm đau sau đó. Nó không giống như ứng dụng của bạn sẽ bị quá tải nghiêm trọng bởi hàng triệu cuộc gọi đến hộp thoại tập tin, và ai biết được, có lẽ một ngày nào đó nó sẽ là giải pháp đúng để có hai hộp thoại tập tin. Ngay cả khi bạn không hiển thị cả hai cùng một lúc, có lẽ việc giữ lịch sử trong hộp thoại "nguồn" và có một lịch sử riêng biệt trong hộp thoại "đích" sẽ là một phước lành trong chương trình truyền tệp.

0

Quên hiệu suất/tốc độ nhanh. Nó không quan trọng ở đây. Ngữ nghĩa. Việc sử dụng lại cùng một hộp thoại tập tin có thể cung cấp cho bạn những thứ miễn phí. Hộp thoại sẽ bắt đầu trong cùng một thư mục mỗi lần? Nó sẽ nếu nó là cùng một ví dụ. Nếu bạn đang tạo hộp thoại mới, bạn sẽ phải thiết lập thư mục khởi động tự của bạn.

Ngoài ra tại sao bạn không thể tạo nhiều hơn một trường hợp? Chỉ cần tạo một thành viên cá thể trong khung của bạn và được thực hiện với nó.

Các vấn đề liên quan