Giải thích sự khác biệt và phân tích ưu nhược điểm của 2 kĩ thuật này

Em có thắc mắc về hình dưới đây. Mong anh chị giúp đỡ ạ. Em cám ơn anh chị

Hi Nobita.

  1. Ư nhược điểm của giải pháp phụ thuộc vào bài toán của bạn.
  2. KT1 và 2 khác nhau ở chỗ KT2 coi phương thức như một đối tượng và bạn có thể get, set nó khi runtime giống như vận động viên 3 môn phối hợp ban đầu anh ta có phương thức chạy sau khi xong thì thay nó băng phương thức bới rồi tiếp đến là đi xe đạp. Hoặc khi bạn có một tập các thuộc tính và bạn tống hợp nó thành 1 đối tượng.
2 Likes

em cám ơn ạ, anh có thể minh họa bằng 1 bài toán đơn giản nhất để em thầy được ưu nhược điểm không ạ

Sơ đồ bên phải (gọi là Strategy pattern) hay hơn vì nếu một class sử dụng hai (trở lên) thao tác như vậy thì sơ đồ bên trái sẽ rơi vào diamond inheritance (do concrete class). Vả lại một class cho mỗi thao tác + logic chính (bên trái) thì quá khủng và không mô hình tốt.

3 Likes

Nếu nói theo thuật ngữ thì hình bên trái thiết kế theo inheritance, hình bên phải thiết kế theo composition. Sách GoF có phân tích và so sánh chi tiết giữa 2 cách thiết kế đó.

Sự khác biệt, ưu nhược điểm giữa inheritance và composition cũng là sự khác biệt, ưu nhược của 2 hình trái và phải.

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