2013-08-11 36 views
5

Giới thiệuQuy ước đặt tên cho Phương thức Nhà máy là gì?

Các khung ứng dụng MacApp Macintosh [App89] luôn luôn tuyên bố hoạt động trừu tượng định nghĩa các phương pháp nhà máy như lớp * DoMakeClass(), nơi lớp là lớp sản phẩm.

Trích dẫn này đã dẫn tôi đến câu hỏi về quy ước đặt tên cho mẫu thiết kế Phương thức nhà máy.

Expectations

tôi mong đợi để xem thực hành tốt nhất hoặc ví dụ hữu ích, cung cấp rõ ràng phương pháp nhà máy đặt tên.

Vì nó có thể phụ thuộc vào một ngôn ngữ, hãy xem xét một tập hợp các ngôn ngữ phổ biến nhất: C#, Java, C++ và JavaScript.

Context

Đối với một bối cảnh Tôi đề nghị để xem xét cấu trúc lớp sau. Chúng tôi có hai lớp trừu tượng: Tài liệu và Ứng dụng. Ứng dụng có chứa một danh sách các tài liệu và bạn có thể tạo một tài liệu mới. Ứng dụng có phương thức nhà máy CreateDocument().

enter image description here

Cảm ơn

+1

Quy ước, nếu có, có thể là ngôn ngữ phụ thuộc ... – assylias

+0

Tôi quan tâm đến C#, C++ và JavaScript. Tôi đã cố gắng tìm bất cứ điều gì về quy ước đặt tên, nhưng chỉ có một (về MacApp) putted trong câu hỏi của tôi. – Warlock

Trả lời

4

IMHO, tên phương pháp phụ thuộc vào bối cảnh và bản chất của đối tượng được tạo ra. Có lẽ đây là lý do tại sao bạn không tìm thấy bất kỳ quy ước rõ ràng nào. Ví dụ: phương thức Create() có thể nằm trong một ngữ cảnh trong khi Open() hoặc Build() có thể phù hợp hơn với những người khác.

+0

Tôi đồng ý và +1 cho ngữ cảnh. Ngữ cảnh là King * được trích dẫn từ Áp dụng Thiết kế Driven Miền *. –

+0

Quy ước đặt tên là một điều tồn tại hay không. Nó không nên phụ thuộc vào ngữ cảnh hoặc ngôn ngữ lập trình. – Warlock

+0

Tôi không hiểu. Tại sao bạn cần một quy ước đặt tên? 'CreateDocument()' có vẻ là một phương thức nhà máy tự đặt tên tốt. –

0

Không có quy ước mạnh nào liên quan đến mẫu thiết kế này. Cách tốt nhất là sử dụng tiền tố "Do" hoặc "Make" để đánh dấu phương thức nhà máy ở một số ngôn ngữ, phương thức này chưa nhúng phương pháp ảo hoặc trừu tượng (ví dụ: javascript).

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