Nơi để đặt phương pháp chia sẻ chung


9

Tôi có một loạt các phương pháp thường được sử dụng ở mọi nơi. Ngay bây giờ, tiền mã hóa được đặt tên toàn cầu, để thể hiện thực tế rằng chúng ... thực tế là ... toàn cầu.

Tuy nhiên, tôi không thích điều này.

Tôi muốn nhóm chúng thành một lớp và vượt qua một giao diện xung quanh. Tôi sẽ chỉ tạo một ví dụ, nhưng tôi không rơi vào bẫy đơn lẻ ở đây.

Trước hết, tôi nên đặt tên cho lớp là gì. Tôi muốn tránh tên toàn cầu vì tôi sợ những người bảo trì sẽ hiểu sai.

Ngoài ra, làm thế nào tôi nên xem xét việc chia ra một tập hợp các phương thức như vậy để hành vi có thể thay đổi và thích nghi?

Tập hợp các phương thức chứa các thứ như:

  • Bảng chuyển đổi
  • Clipboard tương tác
  • Quản lý phông chữ được xây dựng
  • Phương pháp vẽ phổ biến
  • Cung cấp giao diện với quyền truy cập vào các tài nguyên thường được sử dụng

Đây có giống như các phương pháp Util thuần túy không lưu trạng thái hay chúng lưu trạng thái?
TheLQ

+1 vì không rơi vào bẫy đơn.
Caleb

@TheLQ Họ không nhất thiết phải lưu trạng thái, nhưng họ sẽ giữ dữ liệu const (như biểu đồ chuyển đổi) để thuận tiện.
Lee Louviere

Câu trả lời:


4

Không gian tên có thể là [application].Common.Shared

Các lớp học có thể được đặt tên:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

Tôi sẽ chia tay các lớp vì có vẻ như họ làm những việc khác nhau.


1

Nếu bạn định làm một ví dụ, bạn có khá nhiều người độc thân. Ngoài ra, điều mà mọi người thường sẽ đề cập đến nếu họ nói về một cái bẫy đơn lẻ là những người độc thân là toàn cầu, và hầu hết các lớp tốt hơn là không phải là toàn cầu. Vì vậy, bạn cũng có thể có một singleton. Nếu bạn có thể hợp lý chuyển một giao diện xung quanh cho các đối tượng có thể muốn gọi nó thì nó không thực sự toàn cầu.

Ngoài ra, việc đặt tất cả vào một túi các phương thức toàn cầu khiến cho việc thay đổi hành vi và điều chỉnh hành vi trở nên khó khăn vì mỗi thay đổi đối với một phương thức đều cần một lớp con mới, nhưng mỗi kết hợp thay đổi sẽ cần lớp con riêng.

Tôi khuyên bạn nên có singletons cho mỗi người thực sự là toàn cầu (Tôi sẽ nói với bạn tất cả là của họ) và một số loại đăng ký hoặc nhà máy cung cấp cho bạn một ví dụ (có nghĩa là bạn có thể triển khai như singleton hay không, vì giao diện sẽ không hứa hẹn). Tôi sẽ đặt tên cho họ dựa trên những gì họ làm theo quan điểm của người gọi.


1

Tôi thường đặt các loại thứ này trong tên lắp ráp của riêng mình một cái gì đó như "foo.Common" dưới một không gian tên như "foo.Common.Collections" hoặc "foo.common.UI", v.v., sau đó, tôi có thể tham chiếu lắp ráp trong bất kỳ dự án nào Tôi cần chú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.