You are on page 1of 43

Machine Translated by Google

Machine Translated by Google

SOICT
Trường Công nghệ Thông tin và Truyền thông
Machine Translated by Google

IT3180 – Giới thiệu phần mềm


Kỹ thuật
14 – Tái sử dụng và các mẫu thiết kế

3
Machine Translated by Google

Tái sử dụng phần mềm

Thật tốt khi thiết kế một chương trình để sử dụng lại các thành phần hiện có. Điều này có thể dẫn đến
phần mềm tốt hơn với chi phí thấp hơn.

Lợi ích tiềm năng của việc tái sử dụng

• Giảm thời gian và chi phí phát triển • Cải thiện độ

tin cậy của các thành phần trưởng thành • Chia sẻ chi phí bảo

trì

Nhược điểm tiềm ẩn của việc tái sử dụng

• Khó khăn trong việc tìm kiếm các thành phần thích hợp • Các

thành phần có thể không phù hợp với ứng dụng • Kiểm soát chất

lượng và bảo mật có thể không rõ

4
Machine Translated by Google

Đánh giá phần mềm

• Không thể loại bỏ tất cả các lỗi khỏi phần mềm, ngay cả phần
mềm đã được thiết lập tốt

• BẢO TRÌ
• Phần mềm có được hỗ trợ bởi một tổ chức sẽ tiếp tục bảo trì trong thời gian dài
không?

5
Machine Translated by Google

Thiết kế để thay đổi: Thay thế linh kiện (1)

Thiết kế phần mềm nên lường trước những thay đổi có thể xảy ra trong hệ thống trong
vòng đời của nó

Nhà cung cấp mới hoặc công nghệ mới

• Linh kiện bị thay thế do nhà cung cấp ngừng kinh doanh
• Các thành phần từ nguồn khác cung cấp chức năng, hỗ trợ, giá cả tốt hơn, v.v.

• Điều này có thể áp dụng cho các thành phần mã nguồn mở hoặc do nhà cung cấp cung cấp

6
Machine Translated by Google

Thiết kế để thay đổi: Thay thế linh kiện (2)

Thiết kế phần mềm nên lường trước những thay đổi có thể xảy ra trong hệ thống
trong vòng đời của nó

Triển khai mới

• Việc thực hiện ban đầu có thể có vấn đề


• Hiệu suất kém
• Sao lưu và phục hồi không đầy đủ
• Không thể hỗ trợ tăng trưởng và các tính năng mới được thêm vào hệ thống

7
Machine Translated by Google

Thiết kế để thay đổi: Thay thế linh kiện (3)

Thiết kế phần mềm nên lường trước những thay đổi có thể xảy ra trong hệ thống
trong vòng đời của nó

Bổ sung cho các yêu cầu

• Khi hệ thống đi vào sản xuất, thông thường sẽ bộc lộ cả điểm yếu
và cơ hội để có thêm chức năng và cải tiến
đến thiết kế giao diện người dùng

• Ví dụ, trong ứng dụng hướng dữ liệu, gần như chắc chắn sẽ có các yêu cầu về
báo cáo bổ sung và cách phân tích dữ liệu

Yêu cầu cải tiến thường là dấu hiệu của một hệ thống thành công.
Khách hàng nhận ra những khả năng tiềm ẩn

số 8
Machine Translated by Google

Thiết kế để thay đổi: Thay thế linh kiện (4)

Thiết kế phần mềm nên lường trước những thay đổi có thể xảy ra trong hệ thống
trong vòng đời của nó

Thay đổi trong miền ứng dụng

• Hầu hết các miền ứng dụng thay đổi liên tục •
Do cơ hội kinh doanh • Thay đổi
bên ngoài (chẳng hạn như luật mới)
• Nhóm người dùng mới
• Công nghệ mới
• Khó có thể triển khai một hệ thống hoàn toàn mới khi miền ứng dụng thay đổi

Hệ thống hiện tại phải được sửa đổi

Điều này có thể liên quan đến việc tái cấu trúc trên diện rộng, nhưng điều quan trọng là phải tái sử dụng

mã hiện có càng nhiều càng tốt


9
Machine Translated by Google

mẫu thiết kế

• Mẫu thiết kế là các mẫu thiết kế có thể được sử dụng trong nhiều hệ thống
khác nhau

• Chúng đặc biệt thích hợp trong các tình huống mà các lớp có khả năng được sử
dụng lại trong một hệ thống phát triển theo thời gian

Nguồn:

• E. Gamma, R. Helm, R. Johnson, và J. Vlissides, Design Patterns:


Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994
• Wikipedia đã thảo luận tốt về nhiều mẫu thiết kế, sử dụng UML và
các ký hiệu khác, với các mẫu mã.

10
Machine Translated by Google

Lớp kế thừa và trừu tượng

• Các mẫu thiết kế sử dụng rộng rãi tính kế thừa và trừu tượng
các lớp học

• Các lớp có thể được định nghĩa theo các lớp khác thông qua kế thừa
• Lớp tổng quát hóa – siêu lớp

• Các lớp chuyên biệt – các lớp con

• Các lớp trừu tượng

• Các siêu lớp chứa các phương thức trừu tượng và được định nghĩa sao cho các lớp con cụ
thể mở rộng chúng bằng cách triển khai các phương thức trừu tượng

• Có thể không có các phương thức trừu tượng, trong trường hợp này, mục đích là để ngăn chặn
tạo các thể hiện

• Các lớp giao diện là các lớp trừu tượng nhưng dành cho đa kế thừa và để chỉ định một

giao thức chuẩn cho tất cả các lớp thực hiện chúng

11
Machine Translated by Google

Lớp kế thừa và trừu tượng (2) - Ví dụ

12
Machine Translated by Google

13
Machine Translated by Google

14
Machine Translated by Google

Phái đoàn

• Một lớp được cho là ủy quyền cho một lớp khác nếu nó thực hiện một thao tác
bằng cách gửi lại một thông báo cho một lớp khác.

• Ủy quyền là một giải pháp thay thế cho kế thừa có thể được sử dụng khi dự kiến
sử dụng lại.

15
Machine Translated by Google

Ủy nhiệm (2)

Ủy quyền giống như kế thừa được thực hiện thủ công thông qua thành phần đối tượng

16
Machine Translated by Google

Ủy thác (3) - Ví dụ

• Nghiên cứu tình huống: hành vi phát ra âm thanh của mèo - “meo” và “gầm”

• Làm thế nào để soạn hành vi của Cat trong thời gian chạy?

Kế thừa hay ủy thác?

17
Machine Translated by Google

Ủy thác (4) - Ví dụ

• Ủy quyền giúp dễ dàng soạn các hành vi trong thời gian chạy

18
Machine Translated by Google

Ủy nhiệm (5) – Mã nguồn ví dụ

19
Machine Translated by Google

Ủy quyền (6) – Mã nguồn ví dụ

20
Machine Translated by Google

ký hiệu

21
Machine Translated by Google

Mô hình chiến lược


Thuật toán đóng gói

22
Machine Translated by Google

có vấn đề

• Để giải một bài toán


cụ thể, có thể có một họ
thuật toán

• Mỗi thuật toán được


tách ra trong một lớp gọi là
chiến lược

• Khách hàng sẽ quyết

định chiến lược nào sẽ


được chọn

23
Machine Translated by Google

Mô hình chiến lược - Cấu trúc

24
Machine Translated by Google

Mẫu chiến lược - Thành phần

• Bối cảnh duy trì tham chiếu đến một trong các chiến lược cụ thể thông
qua giao diện chiến lược

• Giao diện Chiến lược là chung cho tất cả các chiến lược cụ thể. Nó khai báo các phương
thức được Context sử dụng

• Chiến lược cụ thể thực hiện các biến thể khác nhau của thuật toán
bối cảnh sử dụng

• Khách hàng tạo một đối tượng chiến lược cụ thể và chuyển nó tới
Bối cảnh

25
Machine Translated by Google

Case Study trong nhiều dự án phần mềm

• Phương thức thanh toán trong ứng dụng thương mại điện tử

• Có nhiều phương thức thanh toán khác nhau trong một ứng dụng thương mại điện tử.
Sau khi chọn sản phẩm để mua, khách hàng chọn phương thức thanh toán:
Paypal hoặc Thẻ tín dụng.

• MoMo và ZaloPay được coi là tương lai

26
Machine Translated by Google

Case Study trong nhiều dự án phần mềm

27
Machine Translated by Google

28
Machine Translated by Google

người quan sát

Mẫu
Người đăng ký-Nhà xuất bản

29
Machine Translated by Google

có vấn đề

• Để xác định cơ chế đăng ký để

thông báo cho nhiều đối

tượng về bất kỳ sự kiện nào xảy

ra với đối tượng mà họ đang quan

sát

• Sự kiện -Người đăng ký

• Người nghe

30
Machine Translated by Google

Case Study trong nhiều dự án phần mềm

• Khách hàng muốn trở thành

thông báo về một sản phẩm mới sắp


ra mắt

• Thông báo cho tập khách hàng


về sự kiện mới, voucher mới

• Quản trị viên muốn liên kết giảm

giá/phiếu giảm giá với


nhiều sản phẩm. Mọi thay
đổi về giảm giá/phiếu giảm giá
phải được thông báo cho các

sản phẩm liên kết của nó

31
Machine Translated by Google

Cấu trúc mẫu quan sát

• Thêm cơ chế đăng ký cho nhà xuất bản để đối tượng riêng lẻ có thể đăng ký hoặc hủy
đăng ký khỏi luồng sự kiện sắp tới

• người đăng ký: danh sách người đăng ký của nhà xuất bản

32
Machine Translated by Google

Cấu trúc mẫu quan sát (2)

• notifySubscribers(): cơ chế thông báo của


nhà xuất bản để thông báo cho
người đăng ký về các sự kiện mới

33
Machine Translated by Google

người quan sát

Mẫu
Cấu trúc (3)
Machine Translated by Google

Nghiên cứu điển hình: thương mại điện tử

• Bất cứ khi nào người dùng thực hiện một giao dịch mua mới, họ sẽ nhận
được thông báo về đơn đặt hàng.

• Cơ chế thông báo: email, SMS, PhoneCall

• Nhà xuất bản đóng vai trò gì ?


• Người quan sát là gì ?

35
Machine Translated by Google

Giải pháp

36
Machine Translated by Google

Mô hình trạng thái

37
Machine Translated by Google

có vấn đề

• Trạng thái là một mẫu hành vi •

Cho phép một đối tượng thay đổi


hành vi của nó khi trạng thái

bên trong của nó thay đổi

• Liên quan mật thiết đến

khái niệm Trạng thái hữu hạn


Máy móc

38
Machine Translated by Google

Nghiên cứu trường hợp trong nhiều dự án

• Khi một đơn đặt hàng mới được tạo, người dùng nên xem trạng thái của đơn đặt hàng.
đặt hàng

• Khi trạng thái của một lệnh bị thay đổi, một số hành động sẽ bị kích hoạt!

39
Machine Translated by Google

Cấu trúc Nhà nước

• Bối cảnh: đối tượng có tham chiếu


đến một trong các trạng thái của nó

và cơ chế để tiến hành bất


cứ khi nào có sự thay đổi trạng
thái của nó (changeState )

• trạng thái trừu tượng: các phương thức cụ thể

của trạng thái

• Các trạng thái cụ thể: cụ thể

triển khai cho các phương


thức trạng thái, có tham chiếu trở
lại ngữ cảnh

40
Machine Translated by Google

nghiên cứu điển hình

• Trạng thái thứ tự tuân theo trạng thái hữu hạn

sơ đồ máy

• Đối tượng Context là gì? •


Đối tượng trạng thái là gì?

41
Machine Translated by Google

Giải pháp

42
Machine Translated by Google

14 – Tái sử dụng và Mẫu thiết kế


(kết thúc bài giảng)

43

You might also like