Sự khác biệt giữa Mô hình và Nguyên tắc


20

Sự khác biệt giữa các nguyên tắc và mẫu thiết kế hướng đối tượng là gì? Có phải chúng là những thứ khác nhau? Theo như tôi hiểu thì cả hai đều cố gắng đạt được một số mục tiêu chung (e, g. Linh hoạt). Vì vậy, tôi có thể nói một mô hình là một nguyên tắc và ngược lại?

Nguyên tắc thiết kế = RẮN (tức là Nguyên tắc đảo ngược phụ thuộc)

Mẫu thiết kế = Gof (tức là Mẫu nhà máy trừu tượng)

Câu trả lời:


24

Không, chúng không giống nhau.

Các mẫu là giải pháp phổ biến cho các vấn đề lập trình hướng đối tượng . (Tôi không biết về bất kỳ cuốn sách tương tự nào về lập trình chức năng hoặc khai báo.) Ý tưởng đã được kết tinh trong cuốn sách "Các mẫu thiết kế" nổi tiếng của Gang of Four năm 1995.

Như Andre chỉ ra, các mô hình là phổ biến trong mọi mô hình. Tôi sẽ nhắc lại tuyên bố trước đây của mình: Tôi không biết về bất kỳ cuốn sách tương tự nào về lập trình chức năng hoặc khai báo, nhưng Andre đã khắc phục sự thiếu hiểu biết của tôi với liên kết mà anh ấy cung cấp dưới đây. (Cảm ơn, Andre.)

Nguyên tắc là ít về ngôn ngữ cụ thể hoặc mô hình, tổng quát hơn. "Đừng lặp lại chính mình" - Nguyên tắc DRY - đúng với mọi chương trình.


4
Các mô hình tồn tại trong mọi mô hình. Jeremy Gibbons đang viết một cuốn sách có tên là Các mẫu trong lập trình chức năng (và viết blog về nó ở đây ). Các mẫu chỉ là những gì tên gọi - thiết kế định kỳ, giải quyết các vấn đề tương tự. Chúng ở khắp mọi nơi, 'mặc dù bạn không phải lúc nào cũng nhận ra chúng.
André Paramés

@ AndréParamés Việc lướt qua nhanh chóng khiến tôi tin rằng Jeremy Gibbons đang nói về thành ngữ ngôn ngữ , chứ không phải các mẫu thiết kế.
Izkata


19

Những khái niệm này không giống nhau:

* Nguyên tắc thiết kế: * Nguyên tắc thiết kế phần mềm đại diện cho một bộ hướng dẫn giúp chúng tôi tránh có một thiết kế xấu. như: Nguyên tắc đóng

* Mẫu thiết kế: * Mẫu thiết kế là một giải pháp có thể tái sử dụng chung cho một vấn đề thường xảy ra trong một bối cảnh nhất định trong thiết kế phần mềm. Giống như: Singleton


7

Các mẫu là theo nguyên tắc, những gì thực hiện là các mẫu.

Một nguyên tắc sẽ là "gián tiếp", có thể được thực hiện bằng mẫu "nhà máy", được thực hiện như một lớp với các phương thức nhà máy cuối cùng.


3

Vâng, Nguyên tắc là các quy tắc trong khi các mẫu là ví dụ cụ thể của họ.


1
Bạn có thể cho một số ví dụ?

Vui lòng cho chúng tôi biết nguyên tắc yêu cầu Nhà máy hoặc Chuỗi trách nhiệm hoặc Trọng lượng.
duffymo

2
@duffymo Well Factory chẳng hạn, tuân theo Nguyên tắc đảo ngược phụ thuộc (không tiêm); cả máy khách và cá thể đều phụ thuộc vào sự trừu tượng - giao diện. Chuỗi trách nhiệm dựa trên các nguyên tắc khớp nối lỏng lẻo và tách điều khiển. Tôi tin rằng chỉ có hiệu suất tăng.
m3th0dman

3

Các mô hình là những thứ cấp cao hơn, hơn các nguyên tắc. Các mẫu giải quyết các vấn đề cụ thể. Nguyên tắc có thể được áp dụng bất cứ nơi nào bất kể bối cảnh. Trên thực tế các mẫu dựa trên các nguyên tắc (SRP, DRY, v.v.)

EG Hãy nhìn vào mô hình Chiến lược. Nó định nghĩa một họ các thuật toán, gói gọn từng cái và làm cho chúng có thể hoán đổi cho nhau. Vì vậy, bạn có ở đây khái niệm cao cấp về thuật toán. Với mô hình Nhà nước, bạn có khái niệm cấp cao về nhà nước. Với các nguyên tắc bạn không có bất kỳ khái niệm cấp cao nào. Nguyên tắc là các khối xây dựng, được sử dụng bởi các patters để đạt được mục tiêu. Khi bạn triển khai mẫu Chiến lược, bạn sử dụng RẮN:

  • SRP - bạn xác định mã, chịu trách nhiệm cho thuật toán và trích xuất nó từ một mã khác.
  • OCP - bạn xác định tính trừu tượng, đại diện cho tất cả các thuật toán khác nhau và sử dụng nó
  • LSP - bạn không sử dụng các lớp thuật toán cụ thể trong mã máy khách, chỉ trừu tượng hóa

5
Trên thực tế các mẫu có mức độ thấp hơn các nguyên tắc. Điều đó có nghĩa là, một mô hình gần với việc thực hiện thực tế hơn là một nguyên tắc trong bối cảnh này. Nói cách khác, các nguyên tắc trừu tượng hơn các mẫu với các nguyên tắc có nghĩa là các nguyên tắc thiết kế chung và các mẫu đại diện cho các giải pháp phù hợp với một loại vấn đề cụ thể.

@Jarkko xem ví dụ của tôi. Khi tôi nói về mức độ, tôi có nghĩa là các mẫu dựa trên các nguyên tắc, không phải ngược lại. Gạch không phải là thứ cao cấp hơn là xây dựng.

4
Tôi có thể thấy những gì bạn có ý nghĩa và hiểu suy nghĩ của bạn về vấn đề này. Tuy nhiên, nó trái ngược với ý nghĩa chung của các khái niệm "cấp cao" và "cấp thấp" trong ngữ cảnh của phần mềm. (Vì một số lý do tôi không thể @ -tag bạn.)

1
"Các mô hình là những thứ cấp cao hơn so với các nguyên tắc". Tôi xin khác biệt ==> Một mô hình gần với nhận thức (tức là mức thấp), trong khi một nguyên tắc là quy tắc cấp cao.
Raúl

2

Các mẫu mà tài liệu ban đầu cho Kiến trúc. Trong kiến ​​trúc, áp dụng cho những thứ khác nhau, từ vị trí của cửa trong một căn phòng đến cách bố trí của một ngôi làng.

Gang of Four đã áp dụng ý tưởng này vào Lập trình hướng đối tượng. Có thể có nhiều hơn một mẫu có thể được sử dụng để giải quyết vấn đề, nhưng mỗi mẫu sẽ có một triển khai cụ thể. Các mẫu tồn tại trong các phương pháp lập trình khác, nhưng tôi không biết về bất kỳ cuốn sách áp dụng nào. Như những người khác đã đề cập Mô hình bao gồm các triển khai cụ thể. Sử dụng một mẫu khi nó không áp dụng thường được coi là một mẫu chống.

Nguyên tắc không bao gồm thực hiện, mặc dù có thể có các phương pháp thực hiện tiêu chuẩn. Nguyên tắc là nhiều hơn về việc bao gồm các vấn đề chung hơn là các vấn đề cụ thể. Đối với Inversion of Control, tôi nhận thức được ít nhất ba phương pháp triển khai. Đối với DRY (Đừng lặp lại chính mình) Tôi không biết về phương pháp triển khai cụ thể đơn lẻ, mặc dù tôi sử dụng một số.

Xem xét

  • Bạn đã được yêu cầu sử dụng Mẫu giống như Mẫu nhà máy trừu tượng làm phương pháp duy nhất để phát triển chương trình. Điều này sẽ thích hợp? Không, sau đó nhiều khả năng là một Mô hình.
  • Bạn đã được yêu cầu áp dụng DRY cho tất cả các thành phần? Điều này sẽ thích hợp? Vâng, sau đó nó có nhiều khả năng là một Nguyên tắc.

1

Nguyên tắc thiết kế OO

Nguyên tắc OO là một bộ hướng dẫn đảm bảo khái niệm OOP. Dựa trên khái niệm OOP, điều này xác định các cách để thiết kế cách tốt hơn, một thiết kế tốt hơn. Nguyên tắc thiết kế OO cơ bản là RẮN.

Một mẫu thiết kế cung cấp một giải pháp chung cho một vấn đề thiết kế. Xin lưu ý mô hình thiết kế của người khác có thể được áp dụng cho từ hướng đối tượng buổi trưa. Vì vậy, các mẫu thiết kế OO (OODP) là những mẫu cung cấp giải pháp chung cho nguyên tắc OO dựa trên thiết kế hướng đối tượng. Các mẫu thiết kế được phát hiện, không được phát minh. Có một số cách để xác định OODP và cách nổi tiếng nhất là BSC [Sáng tạo cấu trúc hành vi].

Sau đây là liên kết để giải thích chi tiết. http: // techy Dùt.wordpress.com / 2013/01/21 / design-priplipl-vs-dds-design-potype -descriping -oop-elements /

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.