Em có 1 sự thắc mắc giữa design pattern và algorithm, cả 2 cái đều hướng tới việc giải quyết vấn đề, bài toán. Ví dụ em gặp 1 bài toán tối ưu tài nguyên, em có thể sử dụng object pool pattern cho việc tối ưu, tái sử dụng. Hoặc em có thể code 1 đoạn mã thuật toán nhỏ sử dụng List tạo ra 10 phần tử, nếu phần tử nào status = true thì đang sử dụng, status = false là không sử dụng…
Share
Hmm, nếu so sánh
Design pattern
thì bạn nên so sánhDesign pattern
vớiArchitecture
thì sẽ hợp lý hơn.Thông thường một hệ thống sẽ có nhiều Level và Scope :
1: Function- implementation of a function
2: Class- implementation of a class
3: Project- relations between classes
4: Solution- relations between projects
5: System- relations between solutions
Design pattern
Với `Design pattern` thì sẽ target đến 3 Scope đầu tiên để thiết kếcác mối quan hệ, tổ chức cho
fun, class
trong một project. (Project ý hiểu ở đây có thể coi là Service trong microservice)Với `Design pattern` chúng ta sẽ đi sâu vào chi tiết của project.
Architecture
Với `Architecture` thì target đến 2 Scope cuối cùng là (Solution- relations between projects và System- relations between solutions) tuy nhiên đôi khi nó care thêm cả (Project- relations between classes nhưng rất rất hiếm)
Với `Architecture` thì thông thường chúng ta sẽ nghĩ nhiều về mặt kiến trúc của hệ thống và sẽ không đi sâu vào chi tiết..
Architecture nói đến vấn đề kết hợp mọi thứ trong 1 hệ thống để nó làm việc chơn chu với nhau.
Algorithm (Thuật toán)
Thuật toán thì nó không nằm trong thiết kế hệ thống, thuật toán thì giống như anh Dũng có nói : Nó được sử dụng để giải quyết hoặc tối ưu một bài toán cụ thể nào đó một cách tốt nhất với nhu cầu của mình.
Ví dụ minh họa.
Ví dụ về xây một dinh thự gồm có nhà ở, bể bơi, nhà tắm, khu đá bóng…etc..
Architecture : Sẽ thiết kế để biết được dinh thự sẽ có những gì (Nhà ở, bể bơi, nhà tắm, nhà ăn…) và chúng sẽ được đặt ở đâu trong toàn dinh thự của chúng ta và các mối liên kế giữa chúng.
Design pattern: Sẽ thiết kế ở trong nhà tắm thì sẽ có những gì, đặt ở đâu…. VD: Tắm chỗ nào, nơi để đồ, nơi treo quần áo tắm, máy xấy tóc…etc…
Algorithm : Còn thuật toán thì dễ hiểu rồi nên mình k nói nhé. (Ví dụ thuậ toán tìm kiếm, sort, …)
Vậy câu hỏi của em là gì nhỉ?
em thắc mắc sự khác biệt design pattern và algorithm khi xử lý 1 bài toán
1. Design pattern dùng để tổ chức lớp, hàm hay cả 1 chương trình hệ thống, nó giúp mọi thứ trở nên rõ ràng, mềm dẻo và khoa học hơn. Nhưng chưa chắc nó đã làm chương trình của chúng ta tối ưu (chạy nhanh) hơn.
2. Thuật toán thì thường được dùng để giải quyết hoặc tối ưu một bài toán cụ thể nào đó, ví dụ như sắp xếp, tìm kiếm và kết quả là chúng ta có được 1 hàm để sử dụng để giải quyết các bài toán kia.
Như vậy 2 thứ này dùng cho 2 phạm vi và mục đích khác nhau em ạ.