2010-01-13 46 views
5

Các mẫu thiết kế mà tôi nên hoàn toàn quen thuộc là gì? Và một ví dụ dễ dàng mà mỗi cái có thể được sử dụng để làm gì?Các mẫu thiết kế quan trọng trong phát triển web quan trọng như thế nào?

Tôi là nhà phát triển web (tôi sử dụng Django và quen thuộc với việc tách logic), nhưng tôi làm việc tại công ty ứng dụng dành cho máy tính để bàn. Họ luôn nói về những người độc thân, và tôi quên ... nhưng nó khiến tôi không có đầu mối!

+0

wiki cộng đồng .... – jldupont

+0

Chắc chắn, cộng đồng wiki. – TIMEX

+0

Chỉ cần có cho mình cuốn sách có liên quan nhất và trải qua tất cả. –

Trả lời

10

Quên Singleton. Nó gây nhầm lẫn và hiếm khi cần thiết.

Tìm hiểu Nhà nước, Chiến lượclệnh. Chúng được sử dụng mọi lúc.

Trạng thái dành cho bất kỳ thứ gì có logic phụ thuộc vào trạng thái của đối tượng. Tóm lại, mọi tuyên bố nếu có thể có thể được thực hiện tốt hơn thông qua Tiểu bang. Nghiêm túc. Quá nhiều câu lệnh if là một mã có mùi và cho biết rằng có quá trình xử lý trạng thái nằm rải rác khắp nơi.

Chiến lược dành cho bất kỳ quá trình xử lý "plug-in" hoặc "mở rộng" hoặc "tùy chọn" nào.

Lệnh dành cho mọi tập hợp tác vụ có thể mở rộng (và có thể tổng hợp). Phục hồi dữ liệu đã lưu. Bảng thả, tạo, chỉ mục, điền. Xác thực, tải, tóm tắt, báo cáo. Bất kỳ thứ gì giống như lệnh có thể được đặt lại với nhau theo các cách khác nhau, các thứ tự khác nhau, v.v., có lẽ nên được thực hiện với thiết kế Lệnh chính thức.

+0

+1 cho mẫu chiến lược. Điều hữu ích nhất mà tôi từng học, thiết kế mẫu mã khôn ngoan. – GSto

+0

-1 để nói 'quên' Singleton. Có, nó bị lạm dụng và chủ yếu có xu hướng hành động như một tĩnh toàn cầu, đó là kinh khủng, nhưng người ta cần phải biết nó là gì, và nó là đôi khi cần thiết. Chắc chắn tôi sẽ không khuyên bất cứ ai bỏ qua nó hoặc vẫn không quen thuộc với một mô hình được sử dụng rộng rãi như vậy. Cần phải làm quen với nó nếu không có lý do nào khác ngoài việc có thể tranh luận hiệu quả trong các cuộc họp thiết kế vì sao chúng ta tuyệt đối không nên sử dụng nó. –

+0

@DaveSims Tôi đồng ý với bạn. Ví dụ yêu thích của tôi là đối tượng kết nối cơ sở dữ liệu. Nếu chúng ta phải truyền nó cho mọi phương pháp trong hệ thống, chúng ta sẽ đi hạt. – dotslash

11

MVP hoặc MVC

Model View Presenter hoặc Model View Controller

Nhiều mẫu architecural nhưng neverless, họ là một sự kết hợp của các mẫu thiết kế.

+5

Khá một tuyên bố táo bạo. Tôi thấy hàng tấn kịch bản mà MVC sẽ không phù hợp hoặc chỉ đơn giản là vô nghĩa. –

+1

Tôi không đồng ý. Đối với testability, và với các khuôn khổ như ASP.NET MVC et al, nó có thể đau nhiều hơn không theo các mô hình như vậy. – Finglas

+3

Mặc dù "không có ứng dụng web nào không có chúng" có thể quá đậm, tôi cho rằng "không có nhà phát triển ứng dụng web nào không có kiến ​​thức về chúng". –

2

Thành thật mà nói, các mẫu là quan trọng nhưng biết khi sử dụng chúng cũng quan trọng. Sẽ không bao giờ có bất kỳ câu trả lời nào được đặt ra, đó là điều bạn cần phải cảm nhận cho chính mình. Những người chiến đấu về nó là một tuyệt đối, nơi bạn nên luôn luôn sử dụng chúng hoặc luôn luôn không sử dụng chúng là không chính xác. Các mẫu thiết kế là một công cụ. Tôi khuyên bạn nên xem Amazon.com cho một cuốn sách bằng bất kỳ ngôn ngữ nào bạn đang viết trong đó đề cập cụ thể với các mẫu thiết kế. Tôi biết có một bản viết cho Ruby on Rails là tuyệt vời mặc dù tôi không nhớ tên, đó cũng là một cho Java được gọi là Head First Design Patterns, và trên cho C# được viết bởi Bob và Micah Martin là tuyệt vời. Đọc bất kỳ một trong những người áp dụng cho ngôn ngữ bạn quen thuộc nhất. Ngay cả khi bạn không sử dụng tất cả các mẫu, bạn nên hiểu cách chúng hoạt động và khi nào chúng sẽ hữu ích khi sử dụng.

0

MVVM là phiên bản mới hơn mà tôi đã thấy được sử dụng với Silverlight. Đó là một chút nhiều, nhưng nó có vẻ hiệu quả.

+1

Bạn không có nghĩa là MVVM hoặc Model View ViewModel? Nếu đó không phải là một cái mới với tôi. – Finglas

1

Biết các mẫu thiết kế sẽ không được sử dụng nhiều cho đến khi bạn biết tại sao chúng là chiến lược tốt nhất cho một vấn đề nhất định. Việc học các mẫu thiết kế ngay từ đầu có lẽ là tốt, ngoại trừ bạn đã bỏ lỡ tất cả các cách "sai" để giải quyết vấn đề đó, điều đó có nghĩa là bạn có thể thiếu sự khác biệt tinh tế khi sử dụng mẫu nhất định và khi nào không sử dụng nó .

Điều duy nhất tồi tệ hơn những người bám theo những cách cũ của họ và không bận tâm học cách thích hợp, là những người học đúng cách và không bận tâm học hỏi tại sao theo cách đó là đúng.Và họ tiếp tục áp dụng nó vào những thứ mà nó không nên được áp dụng cho, bởi vì họ chỉ không biết tốt hơn.

Vì vậy, quan điểm của tôi là, nếu bạn mới phát triển web, đừng quá bị cuốn vào mẫu thiết kế cường điệu (mặc dù đó là một quảng cáo tốt). Học bằng cách tự làm. Khi bạn đã đạt đến một cấp độ nhất định, hãy đọc các mẫu thiết kế và xem nơi chúng có thể được áp dụng để làm cho mã của bạn tốt hơn.

R THNG cách bạn học chúng đúng cách. Không giống như bị buộc phải chạy trước khi bạn có thể đi bộ.

1

Đối với các ứng dụng web, hiểu ít nhất ở mức thô sơ các mẫu được mô tả trong Các mẫu kiến ​​trúc ứng dụng doanh nghiệp đã chứng minh có giá trị đối với tôi. Các mẫu Gang of Four cũng rất đáng biết.

Nhưng tôi cho rằng bạn không cần kiến ​​thức về các mô hình bách khoa để bắt đầu. Một sự hiểu biết ngầm sẽ giúp bạn hiểu được nơi để tìm khi bạn bắt đầu gặp phải sự ma sát giữa các ý tưởng/vấn đề kinh doanh và mã của bạn. Tôi đã có một vài chuyến đi cuối tuần cho phép tôi cày qua hai cuốn sách này một cách trọn vẹn, nhưng tôi vẫn tìm thấy thông tin chi tiết trong phần mô hình hữu ích hơn như một tham chiếu hơn là kiến ​​thức nền.

Chỉ đọc phần "Phần 1" của GoF hoặc PoEAA sẽ giúp bạn nhiều hơn là học ba hoặc bốn mẫu, vì bạn sẽ biết nơi cần tìm khi gặp phải vấn đề mà họ mô tả. Và bạn có thể tra cứu chi tiết của hầu hết các mẫu mà họ mô tả trực tuyến.

Mẫu GOF mà tôi sử dụng trực tiếp hoặc gián tiếp, thường xuyên vô thức, trong phát triển web, bao gồm: Observer, Command, Composite, State, Strategy. Tôi thường không sử dụng Singleton ngoại trừ một khách hàng của các công cụ ghi nhật ký và dịch vụ định vị/phụ thuộc. Các mẫu PoEAA mà tôi sử dụng thường xuyên, thường là vô thức, hoặc tình cờ như một phần của chiến lược truy cập dữ liệu hoặc khung web tôi đang sử dụng, là Bản ghi hoạt động, Bộ điều khiển ứng dụng, Trình ánh xạ dữ liệu, Mô hình miền, Cổng, Tải trọng lười, Lớp siêu lớp, Trang Bộ điều khiển, Chế độ xem mẫu và Đối tượng giá trị. Đó không phải là đầy đủ; đây chỉ là một vài điều nảy sinh trong đầu.

Hầu hết trong số đó có thể được học hỏi một cách hữu ích hơn bằng cách bắt đầu với khung phát triển web được đề xuất, như Rails, Django, hoặc Monorail Castle, hơn là trong tóm tắt. Xét cho cùng, các mẫu đã được xác định và trích xuất từ ​​hàng nghìn trải nghiệm phát triển ứng dụng thành công, không được phát minh và sau đó được dán vào bởi vì chúng có vẻ thông minh. Nó khá dễ dàng để có được quá vui mừng bởi kiến ​​thức tốt hơn bề ngoài đạt được trên một hoặc hai mẫu và sau đó nhìn thấy "chỉ móng tay" cho mọi vấn đề bạn thấy ngay sau đó và cố gắng để búa một mô hình không phù hợp vào một giải pháp bởi vì bạn hiểu cách nó hoạt động.

Vì vậy, hãy tìm hiểu các mẫu, có; có được một cái nhìn tổng quan bề ngoài về động cơ của tất cả những người thường được sử dụng, nhưng không cảm thấy như bạn phải chờ đợi để viết mã nghiêm trọng cho đến khi bạn hiểu một số danh sách tùy ý của họ.

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