ĐỀ tài STATE PATTERN

16 296 3
ĐỀ tài STATE PATTERN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM MÔN HỌC: THIẾT KẾ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG ĐỀ TÀI: STATE PATTERN Giảng viên: ThS Nguyễn Trần Thi Văn Nhóm 11 DANH SÁCH NHÓM 11 Phùng Văn An NỘI DUNG Đặt vấn đề giải pháp Tổng quan State Pattern Các trường hợp sử dụng Cấu trúc mẫu Ưu – Nhược điểm Các mẫu liên quan Demo ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP  Đặt vấn đề   Viết game, có lớp Soldier Lớp Soldier xử lý input từ bàn phím • Nhấn Space nhảy class Soldier { void HandleInput(Input input) { if (input == PRESS_SPACE) { setGraphics(IMAGE_JUMP); } } } • Khi ta nhấn nhiều lần Space -> Lỗi… ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP  Đặt vấn đề • Fix lỗi: - Thêm cờ isJumping class Soldier { void HandleInput(Input input) { if (input == PRESS_SPACE) { if (!isJumping) { isJumping = true; setGraphics(IMAGE_JUMP); } } } } ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP  Đặt vấn đề • Nhấn Ctrl ngồi class Soldier { else if (input == PRESS_CTRL) { if (!isJumping) { void HandleInput(Input input) { isJumping = false; if (input == PRESS_SPACE) { setGraphics(IMAGE_DOWN); if (!isJumping) { } isJumping = true; } setGraphics(IMAGE_JUMP); else if (input == RELEASE_CTRL) { } setGraphics(IMAGE_STAND); } } } } ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP  Đặt vấn đề • • Lỗi tương tự Sửa cách thêm cờ isStanding, isDown  Mỗi thêm trạng thái cho lớp Soldier ta phải thêm cờ đồng thời phải điều chỉnh lại code cũ  Code ngày phức tạp khó hiểu ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP  Giải pháp   Liệt kê trạng thái Soldier Liệt kê cách chuyển trạng thái => Finite State Machine Bình đẳng 2.TỔNG QUAN VỀ STATE PATTERN    State pattern thuộc nhóm Behavioral Patterns Cho phép Thay đổi hành vi đối tượng có thay đổi trạng thái bên Sử dụng tính Đa Hình để định nghĩa hành vi khác cho trạng thái khác đối tượng  Biến cố kiện xảy làm cho đối tượng chuyển trạng thái(tự xảy bị bên tác động) CÁC TRƯỜNG HỢP SỬ DỤNG Mẫu thiết kế State áp dụng cho đối tượng có trạng thái khác Những đối tượng thay đổi trạng thái khác phản ứng lại ảnh hưởng khác từ bên ngồi Khi đó, ta thấy đối tượng có trạng thái có đặc tính sau: • Có tập trạng thái xác định Ví dụ, nhân vật game có trạng thái đứng yên, di chuyển, nhảy lên, công… • • Đối tượng có trạng thái thời điểm Có số hành động gửi đến đối tượng Ví dụ phím bấm người chơi bấm để điều khiển nhân vật • Có thể chuyển đối trạng thái đối tượng 10 CẤU TRÚC MẪU  State: Một lớp abstract interface tạo giao tiếp chung cho lớp ConcreteState   Context: Lớp mà client (các developer khác) sử dụng ConcreteState: Lớp thể trạng thái cụ thể 11 ƯU – NHƯỢC ĐIỂM  Ưu điểm • Mỗi trạng thái đối tượng lưu trữ lớp state riêng biệt Thêm State mới, ta cần thêm lớp đối tượng Các state hoạt động độc lập với nhau, nên dễ dàng bảo trì riêng lẻ • Thay sử dụng đoạn code if/else, ta áp dụng mẫu state Nên việc thay đổi trạng thái đối tượng dễ dàng Code đọc dễ hiểu • Mỗi state bao gồm thuộc tính hành vi đối tượng Các state khác có hành động khác Nên đối tượng phản ứng lại tác động từ bên theo cách khác nhau, tùy thuộc vào trạng thái 12 ƯU – NHƯỢC ĐIỂM  Nhược điểm • Mỗi lớp state mang đậm tính riêng biệt mà state thuộc Ví dụ: Trạng thái cơng hero bắn cung mang đậm tính chất hero đánh xa Không thể tái sử dụng trạng thái công hero bắn cung áp dụng cho hero đánh kiếm Khả tái sử dụng State • Chương trình chạy chậm chút so với việc không sử dụng mẫu State, nhiên, điều không đáng kể 13 CÁC MẪU LIÊN QUAN • Mẫu Flyweight: giải thích đối tượng State phân tách phân tách • Các đối tượng State thường Singleton 14 DEMO class Class Model Soldier AbstractState - state: AbstractState + HandleInput(Soldier, Input): AbstractState + Handle(Input) StandState JumpState DownState + HandleInput(Soldier, Input): AbstractState + HandleInput(Soldier, Input): AbstractState + HandleInput(Soldier, Input): AbstractState 15 THE END THANK YOU FOR WATCHING ! 16 ... tượng State thường Singleton 14 DEMO class Class Model Soldier AbstractState - state: AbstractState + HandleInput(Soldier, Input): AbstractState + Handle(Input) StandState JumpState DownState... hiểu ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP  Giải pháp   Liệt kê trạng thái Soldier Liệt kê cách chuyển trạng thái => Finite State Machine Bình đẳng 2.TỔNG QUAN VỀ STATE PATTERN    State pattern thuộc... Văn An NỘI DUNG Đặt vấn đề giải pháp Tổng quan State Pattern Các trường hợp sử dụng Cấu trúc mẫu Ưu – Nhược điểm Các mẫu liên quan Demo ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP  Đặt vấn đề   Viết game, có lớp

Ngày đăng: 25/02/2019, 22:12

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan