18

Tôi vừa mới thực sự thực sự bị tiêm phụ thuộc và tự hỏi về mẫu thiết kế trang trí và đang sử dụng nó khắp nơi.Quy ước đặt tên nào bạn sử dụng cho Mẫu trang trí?

Tuy nhiên, điều tuyệt vời là tôi đang gặp khó khăn khi đặt tên cho các lớp trang trí của mình nên tôi chỉ muốn biết những gì người khác làm. Bạn có luôn nối thêm từ Decorator không? Bạn có kết hợp tên giao diện trang trí của nó không? Họ có được không gian tên riêng của họ không?

Các bạn làm gì?

Trả lời

2

Nói chung nơi mẫu được đóng gói trong một đối tượng (so với tập hợp các đối tượng) thì rõ ràng và dễ dàng hơn để bao gồm tên mẫu trong lớp, trong trường hợp này sử dụng Decorator làm hậu tố. Điều này làm việc tốt cho proxy, trang trí, nhà máy, adapter vv .. nhưng không làm việc cho các mẫu khác, nơi một nhóm đối tượng cần thiết trong việc thực hiện mẫu như một cây cầu (tức là đối tượng nào sẽ tận dụng hậu tố-bridge?)

17

Tôi tránh sử dụng tên mẫu thiết kế. Tôi nghĩ rằng điều này thuộc về tài liệu nếu ở bất cứ đâu. Đặt tên lớp/hàm trang trí sau khi nó hoạt động hoặc đại diện. Thực tế là nó trang trí hoặc cầu hoặc liên kết hoặc proxy hoặc tái đại diện là ít hậu quả.

Mỗi lần bạn đặt tên chuỗi, bạn có thêm hậu tố Chuỗi không? Âm thanh như hgrnNotation với tôi, và đó là một cái gì đó tôi cố gắng và tránh.

+0

'hgrnNotation' == Ký hiệu Hungary, đối với sự nhầm lẫn. –

5

Gọi nó là gì.

Tôi có một nhóm trang trí cho giao diện IPrinter. Chúng được gọi là:

  • PrintDisasterRecovery - Exception xử lý
  • PrintQueuer - Làm cho nó một cuộc gọi async

Những chaps cả kế thừa từ PrintDecorator, vì vậy nếu một người nào đó liếc dưới bìa họ có thể thấy những gì đang xảy ra.

11

Lấy ví dụ từ Khuôn khổ IO của API Java. Nó sử dụng mô hình trang trí rộng rãi nhưng tên của các lớp không phản ánh điều này. Ví dụ một BufferedReader có thể trang trí một FileReader Nhưng chúng được đặt tên theo chức năng của chúng - Người đọc.

Thêm trang trí vào tên sẽ dẫn đến các vấn đề khác nếu bạn cũng kết hợp các mẫu khác liên quan đến cùng một lớp như thường lệ. Bạn có thể kết thúc với một lớp có tên MyDecoratorStrategyComponent.

+6

... hoặc thậm chí là AbstractSingletonProxyFactoryBean - http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html – blank

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