Hỏi về design patterns

Code của mình khá rối nên mình đã tìm hiểu về design pattern, có hiểu về cách cài đặt Factory pattern vs Builder pattern nhưng lại ko biết khi nào xài Factory hay Builder. Ai biết xin chỉ giáo giúp mình ! tks nhiều.

Hi bạn,

Vì không có ví dụ cụ thể nên khó để khẳng định design pattern nào phù hợp với codebase của bạn. Trên thực tế, nếu bạn muốn “cài đặt” design pattern thì phải trải qua ít nhất 2 bước.

Bước 1: Bạn cần chắc chắn rằng các đoạn code cần thay đổi phải có tests, ít nhất là unittests để đảm bảo quá trình thay đổi không làm hỏng toàn bộ dự án.
Bước 2: Refactor từng đoạn 1, áp dụng test cho các đoạn cần refactor đó.

Nếu bạn còn đang phân vân giữa Abstract MethodBuilder patterns, chọn bất kỳ 1 trong 2, áp dụng cho codebase của bạn.

@shadow Mình cũng có search tiếng anh rồi, mà nhiều từ đọc cũng mơ hồ cho nên mới lập thread hỏi.
@doanguyen Uh có lẽ mình nên chọn đại 1 trong 2 làm thử. Hi vọng tiếp xúc với nó nhiều sẽ hiểu rõ hơn :smile:

Vậy thì bạn hiểu sai ý mình rồi.

Ý mình là nếu bạn đã hiểu 2 design patterns kia mà chưa biết áp dụng ra sao vào codebase thì mới chọn 1 trong 2. Còn bạn chưa hiểu 2 design patterns thì không nên đụng vào, bạn có thể lập 1 toy-project rồi thử áp dụng để hiểu thêm, còn trường hợp project của bạn không quá quan trọng thì OK.

3 Likes

như doang nguyen đã nói đấy nếu bạn chua biết rõ về 2 cái parttens ấy thì tốt nhất là ko nên sữa lung tung. bạn nên nói rõ là mục đích thay đổi code của bạn là gì thì mọi nguời mới chỉ cho bạn đc.

Builder là dạng nâng cao của constructor, các phương thức build khởi tạo các thành phần, và trả về self để chain với nhau.
Factory pattern là “class X (subclass: X1, X2, …) tạo ra một đối tượng class A (subclass: A1, A2, …)”

Sử dụng Builder Pattern khi nào?

  • Tạo một đối tượng phức tạp: có nhiều thuộc tính (nhiều hơn 4) và một số bắt buộc (requried), một số không bắt buộc (optional).
  • Khi có quá nhiều hàm constructor, bạn nên nghĩ đến Builder.
  • Muốn tách rời quá trình xây dựng một đối tượng phức tạp từ các phần tạo nên đối tượng.
  • Muốn kiểm soát quá trình xây dựng.
  • Khi mong đợi nhiều cách khác nhau cho đối tượng được xây dựng.

Sử dụng Factory Pattern khi nào?

Factory Pattern được sử dụng khi:

  • Chúng ta có một super class với nhiều class con và dựa trên đầu vào, chúng ta cần trả về một class con. Mô hình này giúp chúng ta đưa trách nhiệm của việc khởi tạo một lớp từ phía người dùng (client) sang lớp Factory.
  • Chúng ta không biết sau này sẽ cần đến những lớp con nào nữa. Khi cần mở rộng, hãy tạo ra sub class và implement thêm vào factory method cho việc khởi tạo sub class này.

Bạn có thể tìm hiểu ở link sau:


3 Likes

cảm ơn bạn đây là sự thiết thực từ đầu topic tới giờ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?