2008-11-26 30 views
15

Ai đó có thể minh họa sự khác biệt thực sự giữa hai loại?Các mẫu thiết kế và khung

+0

Nghĩ về nó 4 năm sau, đây thực sự là một câu hỏi ngớ ngẩn. – sarego

+2

Đó là một câu hỏi ngớ ngẩn rõ ràng giúp mọi người và do đó không phải là một câu hỏi ngớ ngẩn;) – Marc

+0

Tôi không nghĩ rằng đó là một câu hỏi câm :) – carousel

Trả lời

21

Mặc dù họ là hai việc rất khác nhau, người ta có thể tranh luận họ cả giải quyết một vấn đề kiến ​​trúc phần mềm

  • một mẫu thiết kế giải quyết được nhiều vấn đề kiến ​​trúc phần mềm (về sự sáng tạo, hành vi, đồng thời, ...) với các thiết kế khác nhau được xác định trước . (thiết kế là implementation of an architecture topic)

  • một khung được dựa trên số Hollywood Principle, nơi bạn triển khai một số yêu cầu cấp cao như được chỉ định và để khung làm phần còn lại của công việc, gọi triển khai của bạn.

Một sự khác biệt quan trọng là phạm vi gắn kết:

  • thiết kế mô hình có mộtchặt chẽphạm vi:

    • lớp thiết kế Patte RNS (bao gồm các lớp học)
    • các mẫu thiết kế kinh doanh (liên quan đến công việc kinh doanh)
    • ứng dụng các mẫu thiết kế (liên quan đến các ứng dụng)
  • khuôn khổ cólớnphạm vi:
    Đối ví dụ: .NET is a framework gồm:

    • một ngôn ngữ (C#)
    • một môi trường runtime (CLR)
    • một bộ sưu tập của thư viện
      Chỉ cần phát triển những gì bạn cần và để cho các khuôn khổ Net gọi lớp học của bạn.
26

Mẫu thiết kế là một khái niệm hoặc biên nhận về cách thực hiện một vấn đề cụ thể.

Khung là mã sẵn sàng để sử dụng, thường được đóng gói theo cách giúp việc tạo ứng dụng dễ dàng hơn nhiều.

Không có lý do gì để giải thích sự khác biệt vì chúng là hai điều hoàn toàn khác nhau.

+0

Không thể giúp bản thân mình: "Một mẫu thiết kế là một hack để vượt qua một sự thiếu hụt trong ngôn ngữ nguồn. Một khuôn khổ là mã đã sẵn sàng để sử dụng ..." – Dan

+0

Một khuôn khổ có thể chứa/sử dụng một hoặc nhiều mẫu thiết kế (và cũng kiến ​​trúc các mẫu), nhưng một mẫu thiết kế không thể chứa một khung công tác. – user1364368

6

Mẫu thiết kế là thiết kế được thiết kế tốt để giải quyết vấn đề. Một khung công tác là một gói mã thực sự mà bạn sử dụng để làm cho các ứng dụng xây dựng dễ dàng hơn. Lưu ý rằng một khung có thể và có thể sẽ, sử dụng các mẫu thiết kế.

12
|------------------------| 
|   (------)  | 
|   (ClassA)  | 
|   (------)  | 
| (-----------)   | 
| ((Singleton))   | 
| (-----------)   | 
|   (---------) |  
|   ((Factory)) | 
|   (---------) | 
|      | 
|      | 
|------------------------| 

Legend: 
    |---| Framework 
    (---) Class 
()  Design Pattern 

Khung là một tập hợp các lớp liên quan để thực hiện một tác vụ nhất định. Các lớp đó có thể hoặc không thể thực hiện một mẫu thiết kế nào đó.

+1

Boo cho việc sử dụng đếm singleton làm mẫu thiết kế, +1 cho lời giải thích tốt đẹp. :-P – Dan

+2

Nó là một mẫu thiết kế, cho dù đó là lạm dụng và lạm dụng hay không. : P Cảm ơn bạn đã upvote. –

4

Từ Object theo định hướng phát triển phần mềm Sử dụng Java bởi Tiểu Bình Jia:

Mặc dù cả hai mẫu thiết kế và các khuôn khổ là cơ chế sử dụng để capyure thiết kế tái sử dụng, chúng hoàn toàn khác. Một mặt, các mẫu thiết kế là các mô tả sơ đồ về các thiết kế tái sử dụng không phải là các chương trình cụ thể và đó là ngôn ngữ độc lập. Mặt khác, các khung là các chương trình có khả năng biên dịch được viết bằng một ngôn ngữ lập trình cụ thể và thường chứa các lớp và các giao diện trừu tượng. Các mẫu thiết kế là các khối xây dựng kiến ​​trúc của các khung công tác. Chúng giúp làm cho các khuôn khổ có thể mở rộng và tái sử dụng được. Các khung thường chứa các triển khai của nhiều mẫu thiết kế hợp tác.

3

Mẫu thiết kế là giải pháp chuẩn cho một vấn đề (thiết kế) nổi tiếng. Ví dụ mẫu Nhà máy, và mẫu Nhà máy Tóm tắt cung cấp một kế hoạch chi tiết để thực hiện các thiết kế để khắc phục các vấn đề chung với các đối tượng instantiating.

Một khung công tác khác có cơ sở hạ tầng mà bạn có thể sử dụng và mở rộng để phát triển giải pháp của riêng bạn. Ví dụ một mô hình 2 "khung ứng dụng web" sẽ chứa cơ sở hạ tầng để xây dựng các ứng dụng dựa trên web. Nó sẽ chứa bộ điều khiển, một số yếu tố gui và các lớp cơ sở mà chúng ta có thể mở rộng để tạo ra mô hình và logic nghiệp vụ của chúng ta. Thông thường nó có chứa mã nguồn nước và tương tác mà chúng ta kế thừa khi chúng ta mở rộng từ các lớp cơ sở của chúng. Một số ví dụ về các khung công tác là Struts, JSF, Khung ứng dụng Swing, khung kiểm tra JUnit, v.v ...

Ngoài ra còn có các thư viện mà chúng tôi sử dụng trực tiếp từ mã của chúng tôi. Thông thường mà không mở rộng các lớp học của họ. Log4J sẽ là một ví dụ về một thư viện.

0

Khung cụ thể hơn cho định nghĩa sự cố. Để viết một mẫu thiết kế có thể được đưa ra hoặc sử dụng khi nào có thể áp dụng.

10

Đây là GOF 's câu trả lời:

Bởi vì mô hình và khuôn khổ có một số điểm tương đồng, người ta thường tự hỏi thế nào hoặc thậm chí nếu chúng khác nhau.Họ là khác nhau theo ba cách chính:

  • mẫu thiết kế có nhiều trừu tượng hơn khuôn khổ. Khung có thể là được thể hiện bằng mã, nhưng chỉ các ví dụ các mẫu có thể được thể hiện bằng mã. Sức mạnh của các khuôn khổ là chúng có thể được viết bằng ngôn ngữ lập trình và không chỉ được nghiên cứu nhưng được thực hiện và sử dụng lại trực tiếp. Ngược lại, thiết kế mẫu trong sách này phải được triển khai mỗi khi chúng được sử dụng. Các mẫu thiết kế cũng giải thích ý định, thương mại và hậu quả của , của thiết kế.

  • Mẫu thiết kế nhỏ hơn yếu tố kiến ​​trúc hơn khuôn khổ. Một khuôn khổ điển hình chứa một số mẫu thiết kế, nhưng ngược lại không bao giờ đúng.

  • Mẫu thiết kế ít chuyên biệt hơn so với khuôn khổ. Khung luôn có một ứng dụng cụ thể là tên miền. Khung biên tập đồ họa có thể được sử dụng trong mô phỏng của nhà máy, nhưng sẽ không bị nhầm lẫn cho một khung mô phỏng. Trong tương phản , các mẫu thiết kế trong danh mục này có thể được sử dụng ở gần bất kỳ loại ứng dụng nào. Trong khi nhiều các mẫu thiết kế chuyên biệt hơn chúng ta chắc chắn có thể (chẳng hạn, các mẫu thiết kế cho phân phối hệ thống hoặc lập trình đồng thời), ngay cả những sẽ không ra lệnh một kiến ​​trúc ứng dụng như một khuôn khổ sẽ.

0

Câu trả lời là rất dễ dàng: khuôn khổ: làm thế nào các yếu tố của một hệ thống như (thành phần, lớp, giai cấp, ...) phải hoặc nên tương tác với nhau thiết kế

khác pattern: một giải pháp cho một vấn đề tần số cao. nó có thể là một sự chuyển đổi mã nguồn MSSQL thành oracle, ........ và có 3 loại: phân tích, thiết kế và thực hiện các mẫu.

2

Pattern hỗ trợ tái sử dụng kiến ​​trúc phần mềm và thiết kế - Pattern nắm bắt được cấu trúc tĩnh và năng động và hợp tác của giải pháp thành công cho vấn đề phát sinh khi xây dựng ứng dụng trong phạm vi đặc biệt

Khung hỗ trợ tái sử dụng các thiết kế chi tiết và mã - Khung là một tập hợp tích hợp của một thành phần hợp tác để cung cấp kiến ​​trúc có thể sử dụng lại cho một họ ứng dụng liên quan

Cùng nhau, các mẫu thiết kế và khung công tác elps để cải thiện chất lượng phần mềm và giảm thời gian phát triển.

0

Mẫu: Đặt các đường ranh giới, kiến ​​trúc ứng dụng.

Framework: Để theo dõi mẫu cụ thể, đặt các lớp và thư viện dựng sẵn để tạo mẫu kiến ​​trúc.

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