2010-07-20 20 views
27

thể trùng lặp:
What C++ idioms should C++ programmers use?các mẫu thiết kế nổi tiếng mà một C++ lập trình viên nên biết

Sau khi đọc cuốn sách như C++ Primer, Effective C++ và TC++ PL Tôi muốn tìm hiểu một số quan trọng mẫu thiết kế.

Vì vậy, các mẫu thiết kế nổi tiếng mà mọi lập trình viên C++ nên biết là gì?

+6

Tại sao người nào đó bỏ phiếu cho "Không phải là câu hỏi thực"? x- ( –

+2

Rất nhiều người đam mê lập trình đã hỏi cùng một câu hỏi –

+2

Câu hỏi của tôi là C++ cụ thể, không chỉ liên quan đến mẫu thiết kế ....Tôi nghĩ rằng họ đã không đọc '... rằng một lập trình viên C++ nên biết ' –

Trả lời

17

Câu trả lời rõ ràng là mẫu Gang-Of-Four trong cuốn sách nổi tiếng. Đây là những mẫu giống nhau được liệt kê khắp nơi.

http://en.wikipedia.org/wiki/Design_Patterns

Ngoài ra, có một cái nhìn xung quanh trang web Martin Fowlers ...

http://martinfowler.com/

Có một chút công bằng trên đó - là "nổi tiếng" một có lẽ là "dependency injection" . Tuy nhiên, hầu hết những người khác là khá cụ thể về miền.

"Lớp kết hợp" có thể thú vị cho C++. Lớp mẫu lấy cơ sở riêng của nó làm tham số mẫu, để mẫu có thể được sử dụng để thêm cùng chức năng cho nhiều lớp khác nhau hoặc dưới dạng phương thức tổng hợp để các tính năng khác nhau có thể dễ dàng được bao gồm/loại trừ cho thư viện. Thủ thuật mẫu tò mò định kỳ đôi khi cũng được sử dụng (cơ sở ban đầu là lớp hoàn chỉnh cuối cùng) để các lớp mixin khác nhau có thể làm một số mức độ phản xạ, để các phương pháp trung gian có thể được định nghĩa theo cách đầy đủ loại thành viên vv Tất nhiên nó có thể là một chút dễ bị phụ thuộc cyclic unresolvable, nếu bạn không cẩn thận.

http://portal.acm.org/citation.cfm?id=505148

7

Tôi khuyên bạn nên đọc Head First Design Patterns. Đó là một niềm vui đọc, và bạn sẽ tìm hiểu về rất nhiều các mẫu thiết kế phổ biến.

+1

Tôi đoán rằng cuốn sách cho các mẫu thiết kế Java? –

+1

@kami: Có, các ví dụ mã là trong Java, nhưng các mẫu áp dụng cho tất cả các ngôn ngữ OO. –

7

Trong không theo thứ tự đặc biệt, Gang of Four mẫu tôi thấy & sử dụng nhất có lẽ là như sau:

  • composite
  • Template Method
  • Abstract Factory
  • Singleton (bị ghét nhiều, nhưng ở khắp mọi nơi)
  • khách
  • Builder
  • Proxy
20

C++ - những người cụ thể: RAII và pImpl.

+0

Khó để nói điều nào trong số này là quan trọng nhất. PIMPL không được sử dụng đủ, có lẽ vì lo ngại về chi phí cuộc gọi gián tiếp và có hiệu quả buộc đối tượng vào đống chứ không phải là ngăn xếp. – Steve314

5

Mẫu suy nghĩ. Đó là một viên đạn bạc.

+0

Tôi nghĩ "những viên đạn bạc" là những giải pháp kỳ diệu mà bạn không phải suy nghĩ. Không nhiều người trong số đó phát triển. – Steve314

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