lonely_4ever_54

New Member

Download miễn phí Bài giảng Tạo hàng loạt đối tượng với mẫu template (khuôn mẫu ) và mẫu builder ( thợ xây )





Cho phép khách hàng tạo Robot
Khi bạn sử dụng mẫu Builder, khách hàng sẽ phụ trách quá trình tạo dựng. Khách hàng sử
dụng đối tượng xây dựng builder của bạn để làm những gì họ muốn. Để cho phép khách hàng
tạo robot thể hiện một loạt các hành động – khởi động, lắp ráp, ngừng - Tôi tạo ra một giao
diện interface Robot Builder hỗ trợ các hàm như sau: addStart, addGetParts, addAssemble,
addTest và addStop:



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

Chương 7: TẠO HÀNG LOẠT ĐỐI TƯỢNG VỚI
MẪU TEMPLATE (Khuôn Mẫu ) VÀ MẪU
BUILDER ( Thợ Xây )
Trong chương này, chúng ta sẽ đi qua:
 Sử dụng mẫu Template
 Tạo rô bốt sử dụng mẫu template
 Kế thừa mẫu template
 Hiểu biết sự khác biệt giữa mẫu Template và mẫu Builder
 Sử dụng mẫu Builder
“Tin tốt”, giám đốc GigundoCorp – một công ty mới mà bạn đang nhận trách nhiệm tư vấn -
nói trong khi chạy vào phòng họp “Chúng ta đã nhận được hợp đồng đó”
“Hợp đồng nào?”, mọi người hỏi
“Hợp đồng về những con rô bốt tự động lắp ráp xe hơi”, vị giám đốc nói.
“Ồ, thì ra là hợp đồng đó” Mọi người nói.
“Giờ thì về phòng và viết chương trình thôi”, vị giám đốc vừa nói và xua đuổi mọi người ra khỏi
phòng họp
“Chờ một lát”, bạn nói “Chúng ta có nên dành chút thời gian cho vấn đề thiết kế không? Ví dụ:
có khả năng chúng ta sẽ tạo một loại khác của rô bốt trong tương lai chẳng hạn”
“Chắc chắn rồi”, vị giám đốc nói. “Chúng ta có một tá hồ sơ dự thầu ngoài đó. Nhưng không có
thời gian nghĩ về nó đâu. Chúng ta cần bắt đầu tạo những con rô bốt tự động trước”
“Vâng”, các lập trình viên rên rỉ và mọi người trở về phòng của mình.
“Có điều gì đó mách bảo với tui rằng họ đang mắc phải sai lầm”, bạn tự nhủ trong căn phòng
trống rỗng, rải rác những ly Styrofoam trống rỗng lăn lóc khắp sàn.
Chương này nói này về hai mẫu thiết kế giúp bạn có một cách thức khéo léo hơn trong việc tạo
dựng các đối tượng: mẫu Template Method và mẫu Builder. Mẫu Template Method cho phép
các lớp con định nghĩa lại các bước tạo đối tượng, rất thích hợp cho việc tạo ra các chủng loại
rô bốt khác nhau. Mẫu Builder giúp bạn uyển chuyển hơn trong việc đối tượng vì nó tách rời
quá trình khởi tạo ra khỏi bản thân đối tượng. Cả hai mẫu sẽ được thảo luận trong chương này
Tạo con rô bốt đầu tiên
Các lập trình viên của GigundoCorp đã xào nấu ra phần mềm của họ trong vài ngày và nó vừa
đủ đơn giản. Lớp robot bắt đầu với một hàm khởi tạo như sau:
Và có một số hành động mà robot có thể thực hiện, ví dụ như, để khởi động robot, bạn gọi
hàm bắt đầu Start, để robot làm việc, bạn gọi hàm lắp ráp assemble, để kiểm tra sản phẩm,
bạn gọi hàm kiểm tra test, và vân vân.
Và tất cả những gì bạn cần là một cách, tên là go here, nó sẽ làm cho robot làm việc
bằng cách gọi các hàm start, getParts, assemble, test và stop như sau:
Bạn có thể nhanh chóng viết chương trình kiểm tra. Đầu tiên tạo một robot và gọi hàm go như
sau:
Và khi chạy chương trình, bạn nhận được kết quả:
“Tuyệt vời”, giám đốc điều hành phấn khích. “Phần thưởng luôn ở xung quanh. tui đã nói với
anh rằng họ không cần cái thứ mẫu thiết kế vớ vấn đó”. Các lập trình viên của công ty ném
cho bạn một ánh nhìn dè bỉu.
Tạo Robot với Mẫu thiết kế Template Method
Ngày tiếp theo, “Tin tốt”, giám đốc điều hành của GigundoCorp la lớn, trong khi phóng vào
phòng họp. “Chúng ta kí được hợp đồng khác!”
“Hợp đồng khác nào?” Mọi người hỏi
“Hợp đồng cho robot nướng bánh” Vị giám đốc nói “Giờ thì ra khỏi đây và viết phần mềm cho
nó”
Các lập trình viên nhìn vào trong ly cà phê của họ “Chúng ta phải viết lại tất cả phần mềm từ
đầu”, họ nói
Vị giám đốc liếc mắt nhìn bạn và hỏi “Có tốn nhiều chi phí không?”
“Rất nhiều”, các lập trình viên nói. Và bạn thì đang chống lại sự thúc giục để nói rằng “tui đã
nói với các anh từ trước”
Đây là thời điểm thích hợp để nói về mẫu thiết kế Template Method. Có một rắc rối mà lập
trình viên GigundoCopr đối mặt, họ có một con robot tự động như hình sau:
Nhưng bây giờ họ cần một con robot nướng bánh như hình sau, và thế là phải viết lại mã
nguồn từ đầu
Con robot nướng bánh có một số chức năng giống như con robot lắp ráp ô tô, như là hàm
start, stop, tuy nhiên nó có những sự khác biệt như lắp ráp assemble sẽ không hiển thị
“Getting a carburetor” mà thay vào đó là “Getting flour and sugar…”
Đó là nơi mà mẫu thiết kế Template Method được áp dụng. Mẫu này nói rằng, bạn có thể viết
một cách, dùng để xác định một loạt các thuật toán, giống như hàm go mà bạn thấy
trước đây, để chạy một loạt các chức năng cho robot như hình:
Sau đó bạn đưa hàm này vào một bộ khuôn template bằng cách cho phép các lớp con định
nghĩa lại các bước thuật toán theo cách cần thiết. Trong trường hợp này, để làm một con robot
nướng bánh, bạn sẽ viết lại các hàm getParts, assemble, và test.
Theo định nghĩa chính thức của sách GoF, mẫu Template Method như sau: “Định nghĩa một bộ
khung của một thuật toán trong một chức năng, chuyển giao việc thực hiện nó cho các lớp
con. Mẫu Template Method cho phép lớp con định nghĩa lại cách thực hiện của một thuật toán,
mà không phải thay đổi cấu trúc thuật toán.”
Điều này có nghĩa là bạn nên sử dụng mẫu Template Method khi bạn có một thuận toán được
tạo bởi nhiều bước, và bạn muốn thể tùy chỉnh một số bước trong đó. Chú ý rằng nếu bạn
muốn viết lại mọi thứ từ đầu – khi mọi bước đều phải tùy chỉnh lại – thì bạn không cần dùng
template.
Tạo robot bằng bộ khuôn Template
Nếu bạn có một bộ khuôn Template dựa trên robot, bạn có thể cho nó kế thừa như hình sau:
Bằng cách gọi hàm go, tập hợp các thuật toán sẽ được thực hiện. Để tùy chỉnh trong lớp kế
thừa, bạn chỉ cần viết lại một số bước nào bạn muốn, trong trường hợp robot nướng bánh sẽ
như hình sau:
Đó là ý tưởng đằng sau mẫu thiết kế Template Method – Một chức năng bao gồm nhiều bước
sẽ được tùy chỉnh bởi lớp con. Trong trường hợp bạn cần hai robot, một robot lắp ráp ô tô, một
robot nướng bánh, mọi việc sẽ như thế nào?
Bạn bắt đầu bằng cách tạo một bộ khuôn Template trong một lớp trừu tượng abstract ( để lớp
khác có thể kế thừa nó), gọi là RobotTemplate
Và lớp này cũng cài đặt việc thực hiện mặc định cho từng chức năng trong hàm algorithm,
start, getParts, assemble, test và stop.
Nếu một con robot sử dụng đúng các cách này, ví dụ như hàm start và stop, chúng ta
không cần viết lại chúng. Ngược lại bạn có thể thay đổi các cách này trong các lớp
con.
Ví dụ, bạn có thể sử dụng RobotTemplate để tạo một con robot lắp ráp ô tô. Bạn có thừa kế từ
lớp trừu tượng RobotTemplate trong một lớp mới, lớp AutomotiveRobot.
Code:
public class AutomotiveRobot extends RobotTemplate
{
...
}
Robot lắp ráp ô tô này phải viết lại một số hàm của RobotTemplate như hàm getParts sẽ thông
báo “Getting a carburetor…”, hàm assemble sẽ thông báo “Installing the carburetor…”, và hàm
test sẽ thông báo “Revving the engine…”. Bạn thấy đó, bạn có thể tùy chỉnh các bước trong
một thuật toán được cung cấp bởi một bộ khuôn template.
Bạn cũng có thể tùy chỉnh mã nguồn dựa trên template bằng cách thêm vào một số hàm, ví dụ
như hàm khởi tạo sẽ nhận tên của con robot, và hàm getName sẽ trả về tên này.
Tuyệt vời. Bạn đã kế thừa ph...
 

Các chủ đề có liên quan khác

Top