Skip to content

Instantly share code, notes, and snippets.

@nguyen-thom
Last active September 13, 2018 08:37
Show Gist options
  • Select an option

  • Save nguyen-thom/93f4dc362eade8560a280ebf8ecc674c to your computer and use it in GitHub Desktop.

Select an option

Save nguyen-thom/93f4dc362eade8560a280ebf8ecc674c to your computer and use it in GitHub Desktop.

Revisions

  1. nguyen-thom revised this gist Sep 13, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion composite.md
    Original file line number Diff line number Diff line change
    @@ -24,4 +24,4 @@ Có thể thiết kế theo dạng tree dựa vào việc sử dụng nhiều co
    - Pattern này có gì khác biệt với CoR (Chain of Responsibility) ?
    Tại vì ChainOfResponsibility cũng tổ chức theo tập hợp object
    Answer :
    ChainOfResponsibility là dạng chain của tập object. Nó chạy qua một loạt các hành vi của các con của nó để xử lý cho một request nào đó.
    ChainOfResponsibility là dạng chain của tập object. Nó chạy qua một loạt các hành vi của các con của nó để xử lý cho một request nào đó. Các lớp cha chỉ chứa 1 lớp con. Và dùng next để loop qua các giá trị con kế cận.
  2. nguyen-thom revised this gist Sep 13, 2018. No changes.
  3. nguyen-thom revised this gist Sep 13, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion composite.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    ###Composite pattern
    Composite pattern
    ----------------------------------------------
    Pattern này thuộc về dạng cấu trúc pattern <br>
    Nó dùng để tạo một group objects mà chúng có xử lý giống như một single object đơn lẻ.
  4. nguyen-thom revised this gist Sep 13, 2018. 1 changed file with 25 additions and 0 deletions.
    25 changes: 25 additions & 0 deletions composite.md
    Original file line number Diff line number Diff line change
    @@ -1,2 +1,27 @@
    ###Composite pattern
    ----------------------------------------------
    Pattern này thuộc về dạng cấu trúc pattern <br>
    Nó dùng để tạo một group objects mà chúng có xử lý giống như một single object đơn lẻ.
    Nghĩa là một tập object này có cùng một xử lý nào đó giống nhau. Xử lý giống nhau có nghĩa là thực hiện hành vi với mục đích giống nhau.
    Có thể thiết kế theo dạng tree dựa vào việc sử dụng nhiều composite lồng nhau. Mỗi Composite sẽ có một tập hợp riêng biệt của nó.

    ## Có 3 thành phần trong patter này cần phải nhớ.
    **1. Component**
    Component là một interface định nghĩa hành vi chung cho group object và tất cả các leaf.
    **2. Leaf**
    Leaf là một thực thể đơn lẻ thực hiện hành vi dựa vào các tính chất mà mình có.
    **3. Composite**
    Composite là thành phần quan trọng nhất. Nó thực hiện hành vi dựa trên các tính chất của nó đồng thời cũng thực hiện các hành vi của các con mà nó chứa.

    ### Ví Dụ cụ thể
    Ví dụ điển hình cho pattern này là công cụ tính lương của một tổ chức nào đó.
    Thông thường một tổ chức sẽ tổ chức theo dạng cây cấp bậc từ trên xuống. Đối với mỗi cấp bậc thì tiền lương khác nhau.
    Mỗi phòng ban lại có nhiều nhân viên.
    Để tính lương của tổng công ty chung ta phải tính lương của tất cả phòng ban.
    Hoặc để tính lương của một phòng ban chúng ta chỉ cần tính lương phòng ban đó dựa trên người quản lý.

    ### Các câu hỏi còn thắc mắc đối với Pattern này.
    - Pattern này có gì khác biệt với CoR (Chain of Responsibility) ?
    Tại vì ChainOfResponsibility cũng tổ chức theo tập hợp object
    Answer :
    ChainOfResponsibility là dạng chain của tập object. Nó chạy qua một loạt các hành vi của các con của nó để xử lý cho một request nào đó.
  5. nguyen-thom created this gist Sep 13, 2018.
    2 changes: 2 additions & 0 deletions composite.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,2 @@
    ###Composite pattern
    ----------------------------------------------