Avatar
0
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
design pattern và thuật toán
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...
  • Answer
Remain: 5
3 Answers
Avatar
monkey Professional
monkey Professional
Vậy câu hỏi của em là gì nhỉ?
  • 0
  • Reply
em thắc mắc sự khác biệt design pattern và algorithm khi xử lý 1 bài toán  –  Nguyễn Thái Sơn 1648623482000
Avatar
tvd12 Professional
tvd12 Professional
  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 ạ.

  • 0
  • Reply
Avatar
Thành Lê Văn Professional
Thành Lê Văn Professional
Hmm, nếu so sánh Design pattern thì bạn nên so sánh Design pattern với Architecture 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, ...)
  • 1
  • Reply