Thực hiện các thao tác nguyên thủy để thực hiện các bước đã chỉ ra trong các lớp con của thuật toán PrimitiveOperation trừu tượng, các thao tác này định nghĩa các lớp con cụ thể để thực
Trang 1TÌM HIỂU : Design Pattern – Behavioral
Trang 2Add your company slogan
gì ?
… ?
Đ nh Nghĩa ị
Design Pattern là tập các giải pháp cho vấn đề phổ biến trong thiết kế các hệ thống máy tính. Nó là các tài liệu có giá trị cho người phát triển hệ thống.
Design Pattern
Trang 3Add your company slogan
History
1977 ý tưởng lần đầu tiên được đưa ra dùng các mẫu
chuẩn trong thiết kế xây dựng và truyền thông
1990 Design Pattern được đưa ra thảo luận rộng rãi.
1994 hội nghị Pattern language of programming
design được tổ chức.
2000 Evitts có tổng kết về cách mà các mẫu xâm nhập
vào thế giới phần mềm.
Design Pattern
Trang 4Add your company slogan
Trang 5Add your company slogan
Behavioral…
Interpreter
Mediator Strategy
11 Pattern
Method
Chain of Respon sibility
Command
Iterator
Memento Observer
State
Visitor
Design Pattern
Trang 6Add your company sloganBehavioral…
tả trên để phiên dịch các câu.
Design Pattern
Trang 7Add your company slogan
Interpreter
Định nghĩa
Interpreter đưa ra một ngôn ngữ, xây dựng cách diễn đạt ngôn ngữ đó cùng với một trình phiên dịch sử
dụng cách diễn tả trên để phiên dịch các câu.
Design Pattern
Tạo một cây cú pháp trừu tượng đại diện cho một câu đặc thù trong ngữ pháp đã được định
nghĩa.
Chứa thông tin toàn cục cho việc thông dịch
Khai báo 1 giao diện cho việc thực hiện 1
thao tác
Cài đặt một phương thức thông dịch cho các
ký pháp không phải đầu
cuối
Cài đặt 1 thao tác thông dịch liên kết với những với những ký pháp đầu cuối
Trang 8Add your company slogan
Interpreter
Ứng dụng
Sử dụng mẫu Interpreter khi cần phiên dịch một ngôn ngữ mà ta có thể miêu tả các câu bằng cầu trúc cây cú pháp. Mẫu này hoạt động hiệu quả nhất khi:
Cấu trúc ngữ pháp đơn giản. Với các cấu trúc ngữ pháp
phức tạp, cấu trúc lớp của ngữ pháp trở nên quá lớn và khó kiểm soát, việc tạo ra các cây cú pháp sẽ tốn thời gian và bộ nhớ.
Hiệu quả không phải là yếu tố quan trọng nhất. Các cách
thức biên dịch hiệu quả nhất thường không áp dụng trực
www.themegallery.com
Design Pattern
Trang 9Add your company slogan
thuật đó.
Thực hiện các thao tác nguyên thủy để thực hiện các bước đã chỉ ra trong các lớp con của thuật toán
PrimitiveOperation trừu tượng, các thao tác này định nghĩa các lớp con cụ thể để thực hiện các bước
của một giải thuật
Trang 10Add your company slogan
Điều khiển mở rộng các lớp con. Ta có thể định nghĩa
một template method, template method này gọi các thao tác “hook” tại các điểm đặc biệt, bằng cách đó cho phép các mở rộng chỉ tại các điểm đó.
www.themegallery.com
Trang 11Chain of responsibility
Ý nghĩa
Mẫu này thiết lập một chuỗi bên trong một hệ
thống, nơi mà các thông điệp hoặc có thể được thực hiện ở tại một mức nơi mà nó được nhận
lần đầu hoặc là được chuyển đến một đối tượng
mà có thể thực hiện điều đó
Trang 12Add your company slogan
Trang 14Add your company slogan
Command Pattern
Ý nghĩa
Gói một mệnh lệnh vào trong một đối tượng mà nó có
thể được lưu trữ, chuyển vào các phương thức và trả về một vài đối tượng khác
Mô Hình Mẫu
Design Pattern
Trang 16Add your company slogan
Trang 18Add your company slogan
Trang 19a. Vấn đề đặt ra:
Trang 20Add your company slogan
Mediator
b. Định nghĩa:
Mediator là một đối tượng dùng để đóng gói cách thức tương tác của một tập hợp các đối tượng.
Trang 22Add your company slogan
Mediator
c. Sơ đồ
Trang 23d. Ưu điểm:
- Giảm liên kết giữa các colleagues.
- Đơn giản hoá giao thức giữa đối tượng bằng cách thay các tương tác nhiều - nhiều bằng tương tác 1 - nhiều giữa nó và các colleagues
- Trừu tượng hoá cách thức tương tác hợp tác giữa các đối tượng. Tạo ra sự tách biệt rõ ràng hơn giữa các tương tác ngoài
Trang 24Add your company slogan
Mediator
Trường hợp ứng dụng:
- Một nhóm các đối tượng trao đổi thông tin một cách rõ ràng nhưng hệ thống khá phức tạp dẫn đến các kết nối không có cấu trúc và khó hiểu.
- Việc sử dụng lại một đối tượng gặp khó khăn
vì nó liên kết với quá nhiều đối tượng khác.
- Cho phép tuỳ biến một ứng xử được phân tán trong vài lớp mà không phải phân nhiều lớp con.
Trang 25Ví dụ minh họa
Trang 26Add your company slogan
Trang 27c. Cơ chế:
Memento là đối tượng có chức năng lưu lại trạng thái nội tại của một đối tượng khác - là Originator của Memento. Cơ chế undo sẽ yêu cầu một memento từ originator khi nó cần khôi phục lại trạng thái của originator. Originator khởi tạo Memento với thông tin mô tả trạng thái hiện tại của nó. Cũng chỉ originator mới có quyền truy xuất và lưu trữ thông tin vào memento vì nó trong suốt đối với các đối tượng còn lại.
Trang 28Add your company slogan
Trang 30Add your company slogan
Trang 31Ví dụ minh họa
Trang 32Add your company slogan
Observer
a. Vấn đề:
Trong một nơi hoặc nhiều nơi trong ứng dụng, chúng ta cần phải nhận thức về một sự kiện hệ thống hoặc một sự thay đổi trạng thái ứng dụng.
Một đối tượng quan sát (observer) được tạo ra để quan sát các thay đổi trạng thái của đối tượng nguồn và tự động cập nhật thay đổi lên trạng thái được đăng ký tương ứng của đối tượng đích
Trang 33b. Định nghĩa:
Observer định nghĩa là một phụ thuộc 1- nhiều giữa các đối tượng để khi một đối tượng thay đổi trạng thái thì tất cả các phụ thuộc của nó được nhận biết và cập nhật tự động
Trang 34Add your company slogan
Observer
c. Sơ đồ
Trang 35d. Đặc điểm:
Điều duy nhất mà đối tượng chủ cần biết về các đối tượng qua sát là interface mà các đối tượng quan sát thi hành (Observer interface), chúng không cần biết lớp thi hành cụ thể của đối tượng quan sát, không cần biết đối tượng quan sát là cái gì và làm cái gì.
Có thể thêm đối tượng quan sát bất cứ lúc nào. Bởi vì điều duy nhất mà đối tượng chủ phụ thuộc vào
là danh sách các đối tượng thi hành Observer interface, chúng ta có thể thêm đối tượng quan sát bất
cứ lúc nào ta muốn.
Không cần phải thay đổi đối tượng chủ để thêm vào một loại đối tượng quan sát mới. Nếu một lớp cụ thể muốn trở thành đối tượng quan sát, nó sẽ thi hành Observer interface và đăng ký nó với đối tượng chủ. Đối tượng chủ không cần phải thay đổi gì để một lớp khác trở thành đối tượng quan sát.
Sử dụng lại đối tượng chủ hoặc đối tượng quan sát một cách độc lập không phụ thuộc lẫn nhau. Chúng ta có thể tạo thêm đối tượng chủ cho phép các đối tượng quan sát thi hành Observer interface đăng ký với đối tượng chủ đó.
Thay đổi đối tượng chủ hoặc đối tượng quan sát mà không làm ảnh hưởng đến mối quan hệ giữa đối
tượng chủ và đối tượng quan sát, chỉ cần các đối tượng quan sát vẫn thi hành Observer pattern.
Trang 36Add your company slogan
Observer
Ví dụ minh họa
Trang 37 Là mẫu thiết kế cho phép một đối tượng thay đổi hành vi khi
các trạng thái bên trong của nó thay đổi
Đối tượng sẽ xuất hiện để thay đổi các lớp của nó.
Trang 38Add your company slogan
Ứng dụng:
nó cần phải thay đổi hành vi tại thời điểm chạy chương trình dựa trên trạng thái đó.
kiện Mẫu State sẽ đặt mỗi nhánh của điều kiện trong một lớp riêng Điều này cho phép bạn xử lý trạng thái của đối tượng như một đối tượng đúng nghĩa của nó mà có thể thay đổi một cách độc lập với các đối tượng khác
Trang 39 Là mẫu thiết kế dùng để định nghĩa một họ các thuật toán bằng
các lớp đối tượng để thuật toán có thể thay đổi độc lập đối với chương trình sử dụng thuật toán
Cung cấp một họ giải thuật cho phép client chọn lựa linh động
một giải thuật cụ thể khi sử dụng
Trang 40Add your company slogan
STRATEGY
Ứng dụng:
Strategy cung cấp cách thức để định hình ra một lớp với một trong số các hành vi đó.
Strategy có thể được sử dụng khi các biến thể được thực hiện như một hệ thống phân lớp của các thuật toán.
Design Pattern
Trang 42Add your company slogan
Ứng dụng:
Một cấu trúc đối tượng chứa đựng nhiều lớp của các đối tượng với
các giao diện khác nhau, và ta muốn thực hiện các thao tác trên các đối tượng này thì đòi hỏi các lớp cụ thể của chúng
Nhiều thao tác khác nhau và không có mối liên hệ nào cần được
thực hiện trên các đối tượng trong cấu trúc đó, và ta muốn tránh
“làm hỏng” các lớp của chúng khi thực hiện các thao tác này Visitor cho phép ta giữ lại các thao tác có mối liên hệ với nhau bằng cách định nghĩa chúng trong một lớp
Khi một cấu trúc đối tượng được chia sẻ bởi nhiều ứng dụng, sử
Trang 43Thank You !