SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
TT_MTKPM.pptx
1. Iterator pattern
Memento Pattern
State Pattern
MẪU THIẾT KẾ PHẦN
MỀM
Trường Đại Học Ngoại Ngữ Và Tin
Học
Thành viên nhóm:
Nguyễn XuânPhát
Nguyễn Trọng Phú
Nguyễn Tấn Tuấn
Phan Minh Trí
3. Definition
Cung cấp một cách để truy cập các yếu tố của một đối
tượng tổng hợp một cách tuần tự mà không để lộ biểu diễn
cơ bản của nó.
4. Concept
Để đi qua một vùng chứa (hoặc một tập hợp các đối tượng)
để truy cập các phần tử của nó mà không cần biết dữ liệu
được
lưu trữ nội bộ như thế nào
Những thành phần trên được mô tả như sau
5. Implementation
Phương thức First() đặt lại con trỏ đến phần tử đầu tiên trước khi bạn bắt đầu đi qua
cấu trúc dữ liệu
Phương thức Next() trả về phần tử next trong container
Phương thức CurrentItem() trả về phần tử hiện tại của container mà iterator đang trỏ tại
một thời điểm cụ thể.
IsCollectionEnds() xác thực xem có phần tử tiếp theo nào để xử lý thêm hay không. Vì
vậy, phương pháp này giúp bạn quyết định xem bạn đã đến cuối container của mình hay
chưa.
6. C# có các bộ lặp đã được giới thiệu
trong Visual Studio 2005. Tuyên bố
foreach thường được sử dụng
trong bối cảnh này.
Nếu bạn đã quen thuộc với Java,
bạn có thể đã sử dụng giao diện
Iterator tích hợp của Java,
java.util.Iterator.
Mẫu này được sử dụng trong các
giao diện như java.util.Iterator or
java.util.Enumeration.
Công ty A lưu trữ hồ sơ nhân viên của
mình trong cấu trúc dữ liệu danh sách
được liên kết. Công ty B lưu trữ dữ
liệu nhân viên của mình trong một
mảng.
Mẫu Trình lặp rất tiện dụng trong tình
huống như vậy vì bạn không cần
phải viết mã từ đầu.
Vì vậy, bạn có thể chỉ cần gọi các
phương thức đó mà không cần viết
lại mã.
Ví dụ trong thế
giới thực
Ví dụ về thế giới
máy tính
8. Học hợp tác là điều có thể
Phương pháp tiếp cận lấy học
sinh làm trung tâm
Dạy học phân
hóa
Phương pháp tiếp cận lấy giáo
viên làm trung tâm
Dạy học tích hợp
Học tập nghiêm túc thông qua các
khóa học phù hợp với từng học
sinh
Demonstration
1
Demonstration
2
9. Q&A Session
Mẫu Iterator được sử dụng để làm gì?
Bạn có thể đi qua một cấu trúc đối tượng mà không cần biết chi tiết bên trong của nó.
Bạn có thể đi qua một bộ sưu tập theo nhiều cách khác nhau. Nếu chúng được thiết kế phù hợp,
nhiều chuyến đi ngang cũng có thể song song.
01
02
03
Những thách thức chính liên quan đến mô hình này là gì?
Bạn phải đảm bảo rằng không có sửa đổi ngẫu nhiên nào diễn ra trong quá trình đi
qua.
Nhưng để đối phó với thách thức đã đề cập trước đó, bạn chỉ cần lấy một bản
sao lưu và sau đó tiếp tục. Tôi có đúng không?
Lấy một bản sao lưu và kiểm tra lại nó sau này là một hoạt động tốn kém.
10. Q&A Session
05 Trong quá trình triển khai này, bạn có thể chỉ cần xem xét sử dụng một trong
hai môn khoa học hoặc nghệ thuật để chứng minh việc triển khai mẫu Trình lặp
và giảm kích
thước mã. Điều này có đúng không?
·Nhưng khi bạn sử dụng hai cấu trúc dữ liệu khác nhau, bạn có thể hình dung sức mạnh thực sự của
mẫu thiết kế Trình lặp. Vì vậy, tôi đã giữ cả hai ở đây.
04 Trong code, mình thấy một region tên là Aggregate. Có lý do nào đằng sau việc
đặt tên đó không?
Tổng hợp định nghĩa một giao diện để tạo một đối tượng Iterator. Tôi đã lấy tên từ cuốn sách GoF.
12. Memento
Pattern
Definition
Không vi phạm đóng gói, chụp và bên
ngoài trạng thái bên trong của một đối
tượng để đối tượng có thể được khôi
phục về trạng thái này sau này
01
Concept
Từ memento là một lời nhắc nhở về các
sự kiện trong quá khứ. Bằng cách làm
theo cách tiếp cận hướng đối tượng,
bạn cũng có thể theo dõi (hoặc lưu)
trạng thái của một đối tượng
Real-World Example
Nó là một mô hình toán học, nhưng một
trong những ứng dụng đơn giản nhất
của nó là một cửa quay. Một cửa quay
có một số cánh tay quay, ban đầu bị
khóa.
02
03
13. Computer-World Example
Trong ứng dụng vẽ, bạn có thể cần phải
hoàn nguyên về trạng thái cũ hơn.
Ngoài ra, trong các giao dịch cơ sở dữ
liệu, bạn có thể cần phải khôi phục một
số giao dịch cụ thể. Các mẫu memento
có thể được sử dụng trong các tình
huống đó
04
Implementation
·Một kỷ vật lưu lại trạng thái bên trong
của người khởi tạo.
·Chỉ có người khởi tạo nên tạo ra các
kỷ vật. Sau đó, nó có thể sử dụng một
kỷ vật để khôi phục trạng thái bên
trong trước đó.
·Lớp này được sử dụng để giữ an toàn
cho vật lưu niệm, nhưng nó không bao
giờ hoạt động hoặc kiểm tra nội dung
của một kỷ vật. Một người chăm sóc có
thể lấy kỷ vật từ người khởi tạo.
05
Memento
Pattern
15. Q&A Session
02 Những thách thức chính liên quan đến mẫu thiết kế Memento là gì?
.Có nhiều kỷ vật hơn đòi hỏi phải lưu trữ nhiều hơn. Ngoài ra, họ đặt thêm gánh nặng cho người chăm
sóc.
· Điểm trước làm tăng chi phí bảo trì.
·Bạn không thể bỏ qua thời gian cần thiết để lưu các trạng thái này, điều này có thể làm giảm hiệu
suất tổng thể của ứng dụng.
01 Bạn có thể sử dụng phiên bản không đồng nhất, chẳng hạn như ArrayList,
trong ví dụ trước không?
Tổng hợp định nghĩa một giao diện để tạo một đối tượng Iterator. Tôi đã lấy tên từ cuốn sách GoF.
16. Q&ASession
03 Tôi bối rối. Để hỗ trợ các hoạt động hoàn tác, tôi nên sử dụng mẫu nào—
Memento hay Command?
GoF nói rằng đây là những mô hình liên quan. Nó chủ yếu phụ thuộc vào cách bạn muốn xử lý tình
huống.
18. State
Pattern
Definition
Không vi phạm đóng gói, chụp và bên
ngoài trạng thái bên trong của một đối
tượng để đối tượng có thể được khôi
phục về trạng thái này sau này
01
Concept
Bằng cách làm theo cách tiếp cận
hướng đối tượng, bạn cũng có thể theo
dõi (hoặc lưu) trạng thái của một đối
tượng. Vì vậy, bất cứ khi nào bạn muốn
khôi phục một đối tượng về trạng thái
trước đó, bạn có thể cân nhắc sử dụng
mẫu này
02
19. Real-World Example
Nó là một mô hình toán học, nhưng một
trong những ứng dụng đơn giản nhất
của nó là một cửa quay. Một cửa quay
có một số cánh tay quay, ban đầu bị
khóa.
03
Computer-World Example
Trong ứng dụng vẽ, bạn có thể cần phải
hoàn nguyên về trạng thái cũ hơn.
Ngoài ra, trong các giao dịch cơ sở dữ
liệu, bạn có thể cần phải khôi phục một
số giao dịch cụ thể.
04
State
Pattern
20. Implementation
·Một kỷ vật lưu lại trạng thái bên trong
của người khởi tạo.
·Chỉ có người khởi tạo nên tạo ra các
kỷ vật. Sau đó, nó có thể sử dụng một
kỷ vật để khôi phục trạng thái bên
trong trước đó.
·Một lớp chăm sóc là nơi chứa đựng
những kỷ vật. Lớp học này được sử
dụng để giữ an toàn cho vật lưu niệm,
nhưng nó không bao giờ hoạt động
hoặc kiểm tra nội dung của một kỷ vật.
Một người chăm sóc có thể lấy kỷ vật
từ người khởi tạo.
.
05
State
Pattern
22. Q&A Session
Ông có thể nói rõ hơn về cách mô hình này hoạt động trong một kịch bản
thực tế không?
Mẫu Trạng thái rất hữu ích nếu bạn muốn thiết kế một loại thay đổi hành vi tương tự trong một đối
tượng khi trạng thái bên trong của nó thay đổi.
01
02
03
Trong ví dụ này, bạn chỉ xem xét ba trạng thái của TV: Bật, Tắt và Tắt tiếng. Có
thể có nhiều tiểu bang khác; ví dụ: có thể có một tiểu bang xử lý các sự cố kết
nối hoặc các điều kiện hiển thị khác nhau. Tại sao bạn đã bỏ qua những vấn đề
đó?
Câu trả lời đơn giản là tôi đã bỏ qua những trạng thái đó để giữ cho mọi thứ đơn giản.
Bạn đang thực hiện nguyên tắc mở / đóng trong ví dụ của mình như thế
nào?
Mỗi trạng thái TV này đều bị đóng để sửa đổi, nhưng bạn có thể thêm trạng thái mới vào lớp
TV
23. Q&A Session
Các đặc điểm chung giữa mô hình Strategy và mô hình State là gì?
The State pattern có thể được coi là một động lực Strategy pattern. Both các mô hình thúc đẩy thành
phần và ủy quyền.
04
05
06
Dường như với tôi rằng các đối tượng trạng thái này đang hoạt động giống như
những người độc thân. Điều này có đúng không?
Các lớp con cụ thể của IPossibleStates không chứa bất kỳ trạng thái cục bộ nào trong ví dụ này và kết
quả là, trong ứng dụng này, chỉ có một phiên bản trạng thái đang hoạt động.
Trong các triển khai này, TV là một lớp cụ thể. Tại sao bạn không lập trình để giao
diện trong trường hợp này?
Tôi cho rằng lớp TV sẽ không thay đổi và vì vậy đã bỏ qua phần đó để giảm một số kích thước mã
của chương trình.