Professional Documents
Culture Documents
Design patterns: Tổng quan về design patterns Nhóm: Creational patterns Nhóm Structural patterns Nhóm Behavioral patterns
Design patterns: Tổng quan về design patterns Nhóm: Creational patterns Nhóm Structural patterns Nhóm Behavioral patterns
Design patterns
2/7/2023
1
07/02/2023
2/7/2023
Vấn đề mở đầu:
Game: SimUDuck
Trò chơi có các nhân vật là các con vịt có khả năng bơi và kêu “quack quack”
2
07/02/2023
2/7/2023
2/7/2023
Vấn đề mở đầu:
Vấn đề: Mở rộng trò chơi để cạnh tranh:
Vịt có thể biết bay!!!
3
07/02/2023
2/7/2023
1st idea: Cài đặt thêm phương thức Fly() vào lớp Duck
2/7/2023
4
07/02/2023
2/7/2023
2/7/2023
5
07/02/2023
2/7/2023
Strategy pattern
2/7/2023
Strategy pattern
Context IStrategy
strategy
+ ContextInterface () + AlgorithmInterface ()
ConcreteStrateryA ConcreteStrategyC
ConcreteStrategyB
+ <<Implement>> AlgorithmInterface ()
6
07/02/2023
2/7/2023
Mục đích
Định nghĩa một họ các thuật toán, đóng gói mỗi thuật toán thành các lớp
và làm cho chúng có thể hoán đổi nhau.
Strategy cho phép thuật toán thay đổi không phụ thuộc vào client sử
dụng nó.
2/7/2023
7
07/02/2023
2/7/2023
2/7/2023
Bắt nguồn từ thuật ngữ ngành xây dựng của Christopher Alexander, dùng
để :
Mô tả các vấn đề thường xuyên gặp phải, lặp đi lặp lại trong quá trình xây dựng
các công trình.
Đưa ra một giải pháp cơ bản để giải quyết các vấn đề đó.
Áp dụng giải pháp đó hàng ngàn lần trong xây dựng mà không lần nào giống lần
nào !
Định nghĩa của GoF : Gồm những mô tả cho việc giao tiếp giữa các đối
tượng và lớp đối tượng mà sau đó được tùy biến, chỉnh sửa để giải quyết
một vấn đề thiết kế chung chung trong một ngữ cảnh cụ thể.
8
07/02/2023
2/7/2023
2/7/2023
9
07/02/2023
2/7/2023
Bản chất:
Mục đích là chỉ ra giải pháp để tạo ra các thành phần dùng lại được và dễ dàng
bảo trì, thậm chí là cho cả tài liệu của thành phần đó.
Các phần mềm được tạo nhờ kỹ thuật Design Patterns phải được phân tách độc
lập với nhau trên một số phương diện. Việc phân tách độc lập phần nào sẽ áp
dụng Pattern phù hợp cho phần đó.
Như vậy, việc sử dụng lại như thế nào chính là bản chất của kỹ thuật Design
Patterns.
2/7/2023
10
07/02/2023
2/7/2023
2/7/2023
11
07/02/2023
2/7/2023
Mục đích
Creational Structural Behavioral
Phạm Class -Factory method -Adapter -Interpreter
vi áp -Template method
dụng
Object -Abstract Factory -Adapter -Chain of Responsibility
-Builder -Bridge -Command
-Prototype -Composite -Iterator
-Singleton -Decorator -Mediator
-Facade -Mementor
-Proxy -Flyweight
-Observer
-State
-Strategy
-Visitor
Huỳnh Tuấn Anh - ĐHNT 23
2/7/2023
Khó có thể tìm được ứng dụng chỉ áp dụng một Pattern và cũng không
thể tìm được một ứng dụng dùng cả 23 Pattern.
Một vài Pattern thường đi kèm với nhau như Prototype và Singleton.
Một vài Pattern khác là thay thế lẫn nhau, chúng không thể dùng đồng
thời như Prototype và Abstract Factory.
Mục đích việc phân loại các Pattern:
Làm cho việc tìm hiểu và sử dụng từng Pattern nhanh hơn, đúng hơn.
Giúp tăng tốc việc tìm kiếm Pattern thích hợp ( phù hợp với vấn đề cụ thể của ứng
dụng đang phát triển)
12
07/02/2023
2/7/2023
2/7/2023
13
07/02/2023
2/7/2023
14