Chương 1 LỜi nóI ĐẦU


Các mẫu hoạt động (BEHAVIOR Pattern)



tải về 396.06 Kb.
trang6/7
Chuyển đổi dữ liệu02.09.2016
Kích396.06 Kb.
#31264
1   2   3   4   5   6   7

3.2.5. Các mẫu hoạt động (BEHAVIOR Pattern)


BEHAVIOR Pattern được quan tâm với các thuật toán và nhiệm vụ quyền hạn giữa các đối tượng. BEHAVIOR MẫU chỉ mô tả các mẫu của các đối tượng hoặc các lớp mà cũn cỏc mẫu của truyền thông giữa chúng. Những mẫu này mô tả luồng điều khiển phức tạp mà khó có thể theo tại run- time.

Các mẫu lớp Behavior sử dụng tính kế thừa để sắp xếp hoạt động giữa các lớp:



  • Template method : là một định nghĩa trừu tượng của một thuật toán.

  • Interpreter Biểu diễn ngữ pháp như là biểu đồ lớp và thực hiện interpreter như là một thao tác trong trường hợp của những lớp này.

Các mẫu đối tượng Behavior sử dụng kết cấu đối tượng hơn là tính kế thừa, một số mô tả một nhúm cỏc đối tượng ngang bằng hợp tác để hoàn thành một nhiệm vụ mà không đối tượng riêng lẻ nào có thể tự thực hiện được. Một số mẫu đối tượng hoạt động thường liên quan đến hoạt động bao gói trong một đối tượng và uỷ quyền tới chúng.

Các mẫu thường xác định một lớp trừu tượng, mô tả đối tượng một cách vắn tắt và các mẫu này có tên lấy được từ tên của đối tượng.



  • Đối tượng Strategy rút gọn thuật toán

  • Đối tượng State rút gọn một hành vi độc lập

  • Đối tượng Mediator rút gọn giao thức giữa các đối tượng.

  • Đối tượng Iterator rút gọn phương pháp truy nhập các thành phần.

3.2.5.1. CHAIN OF RESPONSIBILITY.

3.2.5.1.1 Mục đích

Tránh tổ hợp nơi gửi các yêu cầu tới nơi nhận của nó bằng cách đưa ra hơn một đối tượng điểu kiện để nắm bắt yêu cầu. Tổ hợp các đối tượng nhận và chuyển yêu cầu dọc theo tổ hợp này tới khi một đối tượng nắm giữ được nó.
3.2.5.1.2 Ứng dụng:

Nhiều hơn một đối tượng có thể nắm giữ yêu cầu. Handler có thể được xây dựng một cách tự động.

Cần đưa ra một yêu cầu tới một trong nhiều đối tượng không cần xác định nơi nhận một cách rõ ràng.

Một tập các đối tượng mà có thể nắm giữ các yêu cầu nên được định nghĩa động.

3.2.5.1.3 Cấu trúc:

Cấu trúc đối tượng có thể được xem xét thông qua:






3.2.5.1.4 Thành phần:

Hander:

      • định nghĩa một giao diện cho việc nắm giữ các yêu cầu.

      • (optional) thực hiện kết nối kế tiếp.

ConcreteHandler:

  • Nắm giữ các yêu cầu nó chịu trách nhiệm tới.

  • Có thể truy cập tới thành phần kế tiếp của nó.

  • Nếu ConcreteHandler có thể nắm giữ các yêu cầu, nó cũng làm được, mặt khác nó hướng các yêu cầu tới thành phần kế tiếp của nó.

Client.

  • khởi tạo cyờu cầu tới đối tượng ConcreteHandler trên chuỗi.
3.2.5.1.5 Kết quả

Giảm thiểu sự kết hợp

Thờm tính linh hoạt trong việc ấn định trách nhiệm tới các đối tượng. Chain of Responsibility đưa bạn thờm tớnh linh hoạt trong việc phân phối trách nhiệm giữa các đối tượng, có thể thêm vào hoặc thay đổi trách nhiệm chuỗi tại thời gian chạy.

Xác nhận không được đảm bảo : Từ lúc một yêu cầu không có nơi nhận chắc chắn, không có đảm bảo nếu nó được nắm giữ, yêu cầu có thể bị rơi xuống điểm cuối của chuỗi mà không được giữ. Một yêu cầu có thể không được nắm giữ khi chuỗi không được cấu hình đúng cách.

3.2.5.1.6 Cài đặt

Việc thực hiện một chuỗi kế tiếp.

Có hai cách để thực hiện một chuỗi thành công. Đó là: Xác định các liên kết mới, sử dụng kết nối hiện tại, kết nối các kế tiếp, biểu diễn các yêu cầu.


3.2.5.1.7 Mẫu liên quan:

Chain of Responsibility thường được áp dụng cùng với Composite. Thành phần cha có thể hoạt động như là thành phần kế tiếp của nó.

3.2.5.2. COMMAND.

3.2.5.2.1 Mục đích

Bao gói một yêu cầu như là một đối tượng bằng cách đó cho phép bạn tham số hoá client cựng cỏc yêu cầu, hàng đợi khác nhau hoặc chặt các yêu cầu, và đưa ra các thao tác không thể xoá được.
3.2.5.2.2 Ứng dụng

Tham số hoỏ cỏc đối tượng bằng tác động để thực hiện.

Định nghĩa xác định hàng đợi và thực hiện các yêu cầu tại các thời điểm khác nhau. Một đối tượng Command có thể có thời gian sống không phụ thuộc vào yêu cầu gốc.

Hỗ trợ cho việc làm lại.

Hỗ trợ việc loại bỏ các thay đổi nờn chỳng có thể được áp dụng lại trong trường hợp phá vỡ hệ thống.

Cấu trúc một hệ thống theo chiều hướng các thao tác mức cao trong các thao tác ban đầu. Như một cấu trúc là thông thường trong các hệ thống thông tin mà cung cấp việc thực hiện. Một chuyển tiếp đóng gói một tập các thay đổi đến dữ liệu. Command có giao diện chung, cho phép bạn gọi tất cả các thực hiện theo cùng một cách.

3.2.5.2.3 Thành phần:

Command

      • Khai báo một giao diện cho việc thực hiện một thao tác.

ConcreteCommand

  • Định nghĩa ràng buộc giữa đối tượng Nơi nhận và một action.

  • Thực hiện Execute bằng gọi ra thao tác chịu trách nhiệm on Nơi nhận.

Client

  • Tạo một đối tượng ConcreteCommand và thiết lập nơi nhận của nó.

Invoker

  • hỏi command để thực hiện yêu cầu.

Nơi nhận

  • Cho biết làm thế nào để thực hiện các thao tác kết nối tới việc thực hiện một yêu cầu. Bất kỳ một lớp nào có thể phục vụ như một Nơi nhận.
3.2.5.2.4 Cộng tác:

Client tạo đối tượng ConcreteCommand và xác định nơi nhận của nó.

một đối tượng Invoker lưu trữ đối tượng ConcreteCommand.



    • Việc gọi ra kết quả là một yêu cầu bằng việc gọi ra Execute dựa trên command. Khi một command có thể được phá vỡ, ConcreteCommand lưu trạng thái cho việc phá vỡ command trước khi gọi đến Execute.

    • Đối tượng ConcreteCommand gọi các thao tác trên nơi nhận của nó để thực hiện yêu cầu.
3.2.5.2.5 Kết quả:

Command phân tách đối tượng mà gọi thao tác từ đối tượng mà biết làm thế nào để thực hiện nó.

Các Command là các đối tượng lớp đầu tiên. Chúng có thể được đánh tín hiệu hoặc mở rộng giống như bất kỳ một đối tượng nào khác.

Bạn có thể cài đặt các yêu cầu tới yêu cầu phức hợp dễ dàng để thêm một yêu cầu, do bạn không cần thay đổi các lớp hiện có.

3.2.5.2.6 Cài đặt

Độ thông minh như thế nào mà một yêu cầu có thể có? Chỉ đơn thuần là định nghĩa sự liên kết giữa nơi nhận và các hoạt động để đưa ra yêu cầu. Thực hiện mọi thứ bằng chính nó mà không cần việc uỷ quyền tới một nơi nhận trong tất cả.

Khi muốn định nghĩa các yêu cầu mà không phụ thuộc vào các lớp hiện tại, khi không có nơi nhận phù hợp tồn tại, hoặc khi có yêu cầu biết nơi nhận một cách chính xác.

Hỗ trợ undo và redo : Các yêu cầu có thể hỗ trợ undo và redo nếu cung cấp phương pháp để đảo ngược chiều việc thực hiện của chúng.

Tránh lỗi chồng chất trong xử lý undo : Hiện tượng trễ có thể có vấn đề trong đảm bảo tin cậy, Lỗi có thể bị tích lại như các yêu cầu đã thực hiện, không được thực hiện và được thực hiện lại, lặp lại.


3.2.5.2.7 Các mẫu liên quan:

Một composite có thể được sử dụng để thực hiện MacroCommands.

Một Memento có thể giữ trạng thái các yêu cầu command để thực hiện lại hiệu quả của nó.

một yêu cầu mà phải được copy trước khi thực hiện trên cỏc hoạt động của history danh sỏchs như là Prototype.

3.2.5.3. INTERPRETER

3.2.5.3.1 Mục đích

Đưa ra một ngôn ngữ, định nghĩa một biểu diễn cho ngữ pháp của nó cùng với một phiên dịch sử dụng việc biểu diễn để giải thích cỏc cõu trong ngôn ngữ.
3.2.5.3.2 Ứng dụng

Sử dụng Interpreter khi có một ngôn ngữ để thông dịch, và ta cần biểu diễn cỏc cõu lệnh trong ngôn ngữ dưới dạng cây cú pháp trừu tượng

Sử dụng tốt nhất khi



  • Ngữ pháp đơn giản

  • Tính hiệu quả không phải là mối quan tâm hàng đầu.
3.2.5.3.3 Cấu trúc:




3.2.5.3.4 Thành phần:

AbstractExpression.

      • Khai báo một thao tác trừu tượng Interpret là chung cho tất cả cỏc nỳt trong cây cú pháp trừu tượng.

TerminalExpression

  • Thực hiện thao tác Interpret kết hợp với các ký pháp cuối trong ngữ pháp.

  • một instance được yêu cầu cho mọi ký tự cuối trong cõu.s

NonterminalExpression

  • Một lớp được yêu cầu cho mọi quy tắc R::= R1 R2 R3…….. Rn trong ngữ pháp.

  • Duy trì các biến của dạng AbstractExpression cho các ký pháp R1 đến Rn .

  • Thực hiện một thao tác Interpret cho các ký phỏp khụng kết thúc trong ngữ pháp. Interpret gọi đệ quy chính nó trong các biến biểu diễn R1 đến Rn.

Context

  • chứa thông tin toàn cục tới phần phiên dịch.

Client

  • Xây dựng(hoặc được đưa tới) một cây cú pháp trừu tượng biểu diễn thành phần câu trong ngôn ngữ mà ngữ pháp định nghĩa. Cây cú pháp trừu tượng được nhúng từ thể hiện của NonterminalExpression vào lớp TerminalExpression.

  • Gọi ra thao tác Interpret.
3.2.5.3.5 Cộng tác:

Client xây dựng một câu như là cây cú pháp trừu tượng của một thể hiện NonterminalExpresion và TerminalExpression. Sau đó client khởi tạo ngữ cảnh và gọi thao tác Interpret.

Mỗi nút NonterminalExpression định nghĩa Interpret trong trường hợp của Interpret trong từng biểu thức con. Thao tác Interpret của từng TerminalExpression định nghĩa trường hợp gốc của việc đệ quy.

Các thao tác Interpret tại mỗi nút sử dụng ngữ cản để lưu và truy cập trạng thái của interpreter.

3.2.5.3.6 Kết quả

Dễ dàng mở rộng và thay đổi ngữ pháp : do các mẫu sử dụng các lớp để biểu diễn các quy tắc ngữ pháp, cần sử dụng tính kế thừa để thay đổi hoặc mở rộng cú pháp. Các biểu thức hiện tại có thể được modified một cách gia tăng, và các biểu thức mới có thể được định nghĩa như là variation trờn cỏc biểu thức cũ.

Việc thực hiện ngữ pháp cũng đơn giản, Các lớp xây dựng nút trong tầng cú pháp trừu tượng cú cỏc thực hiện giống nhau. Những lớp này thường dễ ghi, và thường là thế hệ của chúng có thể tự động với các biên dịch hoặc bộ sinh cú pháp.

Các cú pháp phức tạp thường khó để bảo trì.

Thêm vào các phuơng pháp mới để giải thích các biểu thức.


3.2.5.3.7 Cài đặt

Tạo cõy cỳ phỏpabstract ( không giải thích làm thế nào để tạo một cây cú pháp trừu tượng).

Định nghĩa một thao tác Interpreter : không phải định nghĩa thao tác Interpreter trong biểu thức lớp.

Sử dụng cỏc kớ hiệu cuối với mẫu Flyweight.

3.2.5.3.8 Các mẫu liên quan:

Composite: Cây cú pháp trừu tượng là một trường hợp của Composite.

Flyweight chỉ ra làm thế nào để sử dụng chung các ký pháp cuối trong cây cú pháp trừu tượng.

Iterator: Interpreter có thể sử dụng Iterator để chuyển đổi cấu trúc.

Visitor có thể được dùng để duy trì hoạt động trong từng nút trong cây cú pháp trừu tượng trong một lớp.


3.2.5.4. ITERATOR

3.2.5.4.1 Mục đích

Đưa ra một phương pháp để truy xuất các thành phần của các đối tượng kết tập một cách tuần tự không cần giải thích bằng cách mô tả ở dưới.

Một đối tượng tập hợp như là một danh sách có thể cho bạn phương pháp để truy cập các thành phần của chúng không cần giải thích cấu trúc bên trong của nó, hơn nữa, cần phải thực hiện các danh sách này bằng nhiều phương pháp khác nhau, phụ thuộc vào bạn thực hiện như thế nào. Nhưng bạn có thể không cần mở rộng giao diện danh sách với các thao tác cho nhiều việc chuyển đổi khác nhau.


3.2.5.4.2 Ứng dụng

Để truy cập các nội dung của đối tượng tập hợp mà không cần giải thích các biểu diễn bên trong.

Hỗ trợ các đa chuyển đổi của các đối tượng tập hợp.

Cung cấp một giao diện đồng đều cho các cấu trúc tập hợp khác nhau( có nghĩa là để xác nhận bước lặp đa hình).

3.2.5.4.3 Cấu trúc:


3.2.5.4.4 Thành phần:

Iterator

      • Định nghĩa một giao diện cho việc truy cập và chuyển đổi các thành phần.

ConcreteIterator

  • Thực hiện giao diện Iterator.

  • giữ một chuỗi vị trí hiện tại trong chuyển đổi của một kết tập.

Aggregate

  • Định nghĩa một giao diện cho việc tạo một đối tượng Iterator.

ConcreteAggregate

  • Thực hiện giao thức tạo Iterator để đưa ra một trường hợp ConcreteIterator phù hợp.
3.2.5.4.5 Cộng tác:

Một ConcreteIterator giữ một chuỗi đối tượng hiện tại trong một kết tập và có thể tính toán đối tượng tiếp theo trong một chuyển đổi.
3.2.5.4.6 Kết quả

Chu cấp cỏc phộp biờn đổi trong chuyển đổicủa một tập hợp. Các tập hợp phức tạp có thể được duyệt bằng nhiều cách.

Các Iterator làm đơn giản hoá giao diện tương thích.

Nhiều hơn một chuyển đổi có thể sẽ xảy ra trong một tập hợp.

3.2.5.4.7 Cài đặt

Iterator có nhiều thực hiện sự biến đổi và sự lựa chọn cân bằng thường phụ thuộc vào việc kiểm soát cấu trúc ngôn ngữ của bạn cung cấp.

Ai kiểm soát các bước lặp : quyết định xem iteration hay client. Nếu client kiểm soát thì iterator được gọi là external iterator và ngược lại là internal iterator.

Ai định nghĩa giải thuật chuyển đổi.

Tính thiết thực của iterator. Có thể nguy hiểm khi sửa đổi một tập hợp trong khi chúng ta đang chuyển đổi. Nếu thành phần được thêm hoặc xoá từ tập hợp có thể kết thúc truy nhập một thành phần hai lần hoặc bỏ qua nó một cách hoàn toàn. Một giải pháp đơn giản là sao chép kết tập và chuyển bản sao chép này .

Các thao tác Iterator được thêm vào.

Sử dụng các iterator đa hình trong C++.

Iterator có thể truy cập đặc quyền.

Các Iterator cho các thành phần.


3.2.5.4.8 Các mẫu liên quan:

Composite: Interator thường được áp dụng vào các cấu trúc đệ quy như là Composite.

Factory Method: Các Interator đa hình dựa vào factory method để giải thích cụ thể về lớp con Iterator thích hợp.

Memento thường được dùng cùng với Iterator mẫu. Một iterator có thể được sử dụng memento để thu được trạng thái của iteration. Iterator lưu vào memento bên trong.

3.2.5.5. MEDIATOR.

3.2.5.5.1 Mục đích

Định nghĩa một đối tượng bao gói một tập các đối tượng tương tác với nhau như thế nào. Memento tăng độ tổ hợp bằng cách giữ các đối tượng khỏi các liên quan lẫn nhau, và nó cho phép thay đổi tương tác một cách độc lập.
3.2.5.5.2 Ứng dụng

Một tập các đối tượng kết nối trong các trường hợp định nghĩa tốt nhưng phức tạp. Việc đưa ra kết quả độc lập là không cấu trúc được và khó hiểu.

Việc sử dụng lại một đối tượng là khó do nó có liên quan đến và kết nối với nhiều đối tượng khác.

Một hoạt động mà nó được phân phối giữa một vài các lớp có thể tuỳ biến không cần phân lớp.

3.2.5.5.3 Cấu trúc:

Cấu trúc đối tượng đặc biệt có thể được nhìn dưới dạng




3.2.5.6. MEMENTO.

3.2.5.6.1 Mục đích

Không cần can thiệp vào việc bao gói, kết quả và mở rộng trạng thái bên trong của đối tượng nên một đối tượng có thể được khôi phục lại tại trạng thái sau đó.
3.2.5.6.2 Ứng dụng

Một snapshot của trạng thái của đối tượng phải được lưu nờn nó có thể được phục hồi tới trạng thái sau đó.

Một giao diện trực tiếp để thu được trạng thái có thể đưa ra cài đặt chi tiết và phá vỡ sự đóng gói của đối tượng.


3.2.5.6.3 Cấu trúc:




3.2.5.6.4 Thành phần:

Memento:

Lưu trạng thái trong của đối tượng Originator. Memento có thể lưu như nhiều hoặc một ít trạng thái trong của orginator như cần thiết tại việc thận trọng orginator của nó.

Bảo vệ truy cập ngược (against) bởi các đối tượng hơn là originator. Các memento đạt hiệu quả với hai giao diện. Caretaker xem xét các giao diện hẹp tới Memento- nó có thể chỉ thông qua memento tới đối tượng khác. Originator, được xem như một giao diện rộng, nó cho phép việc truy cập tới tất cả các dữ liệu cần thiết để lưu trữ bản thân nó vào trạng thái trước. Một cách lí tưởng, chỉ có originator tạo ra memento có thể cho phép truy cập trạng thái bên trong của memento.

Originator.

Tạo một memento để lưu một snapshot của trạng thái bên trong hiện tại.

sử dụng memento để lưu trữ trạng thái bên trong của nó.

Caretaker;

Có chức năng đối với việc giữ an toàn của memento.

Không bao giờ thao tác hoặc thử nghiệm nội dung của memento.

3.2.5.6.5 Cộng tác:

Một Caretaker yêu cầu một Memento từ một Originator, giữ nó một thời gian, và chuyển nó ngược lại tới originator.

Đôi khi một Caretaker không chuyển Memento ngược lại tới Orginator, do Originator có thể không bao giờ cần revert tới trạng thái sớm hơn.

Memento là bị động, Chỉ có originator tạo ra memento sẽ đăng nhập hoặc thử lại trạng thái của nó.

3.2.5.6.6 Kết quả

Đảm bảo giới hạn đóng gói.

Đơn giản hoá Originator.

Sử dụng các memento có thể rất đắt.

Định nghĩa các giao diện rộng và hẹp.


3.2.5.6.7 Cài đặt

Hỗ trợ ngôn ngữ

Memento có hai giao diện : Một cho Origiano, một cho các đối tượng khác.

Lưu trữ các thay đổi gia tăng.

3.2.5.6.8 Các mẫu liên quan:

Command: Command có thể sử dụng memento để duy trì trạng thái của các thao tác có thể thực hiện lại.

Iterator: Memento có thể được sử dụng cho iteration như được mô tả ở trên.


3.2.5.7. OBSERVER.

3.2.5.7.1 Mục đích

Định nghĩa sự phụ thuộc một - nhiều giữa các đối tượng nên khi một đối tượng thay đổi trạng thái, tất cả các phụ thuộc vào chúng cũng được thông báo và tự động thay đổi theo.
3.2.5.7.2 Ứng dụng

Khi một khái niệm trừu tượng có hai khía cạnh, một cái phụ thuộc vào cỏi khỏc. Sự đóng gói những khía cạnh này trong các đối tượng phân chia cho phép bạn thay đổi và sử dụng lại chúng một cách độc lập.

Khi thay đổi tới một đối tượng yêu cầu thay đổi những cỏi khỏc, và bạn không biết được bao nhiêu đối tượng sẽ phải thay đổi.

Khi một đối tượng sẽ được biết những đối tượng khác không cần giả định về những đối tượng này là ai. Trong khía cạnh khác, bạn không cần biết những đối tượng này được kết hợp chặt chẽ.

3.2.5.7.3 Kết quả

Cho phép biến đổi các đối tượng và observer một cách độc lập, do đó có thể sử dụng lại subject không cần sử dụng lại observer và thay thế riêng lẻ.

Cho phép bạn thêm vào observer không cần sửa đổi chủ thể hoặc các quan sát khác.

Ngoài ra cũn cú sự kết hợp trừu tượng Subject và Observer.

Hỗ trợ cho truyền thông quảng bá.

Những cập nhật đột xuất.

3.2.5.7.4 Cài đặt

Ánh xạ các chủ thể sang vật quan sát của chúng.

Quan sát nhiều hơn một đối tượng.

Ai tạo ra các cập nhật thao tác thiết lập trạng thái trong Subject gọi Notify sau khi chúng thay đổi trạng thái Subject. Do đó client không cần nhớ lời gọi Notify trên Subject, nhưng một số thao tác liên tiếp sẽ gây ra liên tiếp các cập nhật mà có thể không mang lại hiệu quả. Làm cho các client có nhiệm vụ để gọi Notify đúng thời điểm, do đó client có thể chờ để tạo cập nhật sau khi các trạng thái đã được thay đổi. Nhưng không có thêm được các cập nhật tạo cần thiết ngay sau đó.

Việc tham khảo ý kiến để xoỏ cỏc đối tượng không dứt khoát.

Xác định các sự biến đổi của quyền lợi một cách rõ ràng.

Bao gói các cú pháp cập nhật phức tạp.

Kết nối các lớp Subject và Observer.

3.2.5.8. STATE.

3.2.5.8.1 Mục đích

Cho phép một đối tượng thay đổi các hoạt động của nó khi trạng thái bên trong của nó thay đổi. Đối tượng sẽ xuất hiện để thay đổi lớp đó.
3.2.5.8.2 Ứng dụng

Một hoạt động của đối tượng phụ thuộc vào trạng thái của nó, và nó phải thay đổi hoạt động của nó tại thời gian chạy phụ thuộc vào trạng thái đó.

Các thao tác có lớn, các biểu thức điều kiện đa thành phần mà phụ thuộc vào trạng thái của đối tượng. Trạng thái này thường được biểu diễn bởi một hoặc nhiều hằng số được cho trước. State sắp đặt từng nhánh của điều kiện trong lớp phân chia. Điều này cho phép bạn xử lý trạng thái của đối tượng như là một đối tượng trong điều kiện đúng mà có thể biến đổi độc lập từ các đối tượng khác.


3.2.5.8.3 Cấu trúc:




3.2.5.8.4 Thành phần:

Context

Định nghĩa một giao diện tới các client.

Duy trì một trường hợp của ConcreteSubclass để định nghĩa trạng thái hiện tại.

State


Định nghĩa một giao diện cho việc bao gói các hoạt động cùng với trạng thái riêng biệt của Context.

ConcreteState subclass.

Mỗi lớp con thực hiện một hoạt động cùng với trạng thái của Context.

3.2.5.8.5 Kết qủa

Khoanh vùng hoạt động trạng thái đã chỉ ra và phân chia hoạt động cho các trạng thái khác nhau.

State mẫu sắp xếp tất cả các hoạt động kết nối với trạng thái thành phần vào một biến đối tượng.

Làm cho các chuyển đổi trạng thái rõ ràng, dứt khoát.

Các đối tượng trạng thái có thể bị chia sẻ.


3.2.5.8.6 Cài đặt

Ai định nghĩa các chuyển đổi trạng thái.

Tạo và phá bỏ các đối tượng trạng thái.

Sử dụng tính kế thừa động.

3.2.5.9. STRATEGY.

3.2.5.9.1 Mục đích

Định nghĩa một họ các thuật toán, bao gói từng thuật toán, và làm cho chúng có thể thay thế được. Strategy cho phép thuật toán biến đổi độc lập từ các client sử dụng nó.
3.2.5.9.2 Ứng dụng

Một số các lớp quan hệ khác nhau duy nhất với các quan hệ của chúng. Các Strategy cung cấp một cách để cấu hình lớp với một trong nhiều hoạt động.

Cần nhiều biến đổi khác nhau của một thuật toán.

Một thuật toán sử dụng dữ liệu mà client không biết về nó.

Sử dụng Strategy mẫu để tránh được việc đưa ra phức tạp, các cấu trúc dữ liệu thuật toán đã chỉ ra.

Một lớp xác định nhiều hoạt động, và những biểu hiện này như cỏc cõu lệnh đa điều kiện trong các thao tác của nó. Thay cho một số các điều kiện, dịch chuyển cỏc nhỏnh điều kiện quan hệ tới lớp strategy của nó.

3.2.5.9.3 Kết quả.

Các họ của các thuật toán quan hệ.

Một lựa chọn tới phân lớp con.

Các strategy khử biểu thức điều kiện.

Một chọn lựa trong các thực hiện. Có strategy có thể cung cấp cỏc cỏch thực hiện khác nhau của cùng một hoạt động. Client có thể chọn lựa giữa các strategy với thời gian khác nhau, không gian và cân bằng khác nhau.

Kết nối trên giữa Strategy và Context.

Client phải có hiểu biết về các Strategy khác nhau.

Gia tăng số lượng các đối tượng.

3.2.5.9.4 Cài đặt

Việc thực hiện các giao diện Strategy và Context

Các strategy như là các tham số nhãn.

Tạo các đối tượng strategy mang tính mặc định.

3.2.5.10. TEMPLATE.

3.2.5.10.1 Mục đích

Định nghĩa khung của một thuật toán trong thao tác, dựa theo một số bước tới các lớp con. Template cho phép các lớp con định nghĩa lại một số bước nào đó của thuậtt toán mà không cần thay đổi cấu trúc của thuật toán.
3.2.5.10.2 Ví dụ

Template method định nghĩa một thuật toán dưới dạng các thao tác trừu tượng mà các lớp con ghi đè lên để cung cấp các hoạt động cụ thể.

Bằng việc định nghĩa một số bước trong thuật toán sử dụng các thao tác trừu tượng , template method gắn các t ứ tự này, nhưng nó cho phép các lớp con có thể biến đổi những bước này để phù hợp với yêu cầu của chúng.


3.2.5.10.3 Ứng dụng

Dùng Template Method mẫu khi:

Để thực hiện các phần bất biến của thuật toán và rời nó tới các lớp con để thực hiện hoạt động mà nó có thể biến đổi.

Khi một hoạt động chung giữa các lớp con có thể được quản lí và khoanh vùng trong lớp chung để tránh mó hoỏ hai lần.Trước hết, phải nhận dạng ra được sụ khác nhau trong mã có sẵn và sau đó phân chia sự khác nhau này sang một số thao tác mới. Cuối cùng, dịch chuyển cỏc mó khác nhau này cùng với template method để gọi một trong số những thao tác mới này.

Để kiểm soát được việc mở rộng. Có thể định nghĩa một template method để gọi thao tác móc nối tại các vị trí đặc biệt, từ đó cho phép việc mở rộng chỉ tại các vị trớ đú.


3.2.5.10.4 Cấu trúc:




3.2.5.10.5 Thành phần:

AbstractClass

  • Định nghĩa thao tác trừu tượng đầu tiên mà các lớp con thực hiện định nghĩa để thực hiện các bước của thuật toán.

  • Thực hiện template method định nghĩa một khung của thuật toán. Template gọi các thao tác ưu tiên như là các thao tác được định nghĩa trong AbstractClass hoặc các thao tác trong các đối tượng khác.

ConcreteClass.

Thực hiện thao tác ưu tiên để đưa ra các bước định nghĩa - lớp con (subclass-specific) của thuật toán.


3.2.5.10.6 Phối hợp cộng tác

ConcreteClass dựa vào AbstractClass để thực hiện các bước bất biến của thuật toán.
3.2.5.10.7 Kết quả

Là một kỹ thuật cơ bản đối với việc sử dụng lại code, chúng đặc biệt quan trọng trong thư viện lớp, do chúng mang ý nghĩa cho factoring out hoạt động thông thường trong thư viện các lớp.

Đưa ra một cấu trúc điều khiển đảo ngược.

Gọi các loại dưới đây của thao tác.

Các thao tác concrete.

Các thao tác trừu tượng

Các thao tác ưu tiên.

Factory method.

Móc nối các thao tác, cung cấp các hoạt động lựa chọn mà các lớp con có thể mở rộng nếu cần thiết.

điều quan trọng đối với template Method là định nghĩa thao tác nào là móc nối, thao tác nào là trừu tượng. Để sử dụng lại lớp trừu tượng một cách hiệu quả, các writer của lớp con phải hiểu được thao tác nào được thiết kế để ghi đè lên.

3.2.5.10.8 Cài đặt

Sử dụng C++ để truy cập điều khiển.

Template Method bản thân nó không bị ghi lồng lên.

Tối thiểu hoỏ cỏc thao tác ưu tiên.

Định tên cho sự chuyển đổi.


3.2.5.11. VISITOR.

3.2.5.11.1 Mục đích

Biểu diễn một thao tác được thực hiện trên tất cả các thành phần của cấu trúc đối tượng. Visitor cho phép bạn định nghĩa thao tác mới mà không cần thay đổi các lớp của các thành phần mà nó thực hiện.
3.2.5.11.2 Ứng dụng

Một cấu trúc đối tượng chứa một số lớp của đối tượng với các giao diện không giống nhau, và bạn muốn thực hiện những thao tác trên những đối tượng này mà phụ thuộc vào các lớp chắc chắn của nó.

Một số thao tác rõ ràng và không cần phải thực hiện trờn cỏc đối tượng dựa trên đối tượng trong một cấu trúc đối tượng, muốn dùng để tránh làm ảnh hưởng các lớp của chúng với những thao tác này.

Visitor cho phép bạn giữ các thao tác quan hệ cùng nhau bằng việc định nghĩa chúng trong một lớp. Khi cấu trúc đối tượng được sử dụng chung bởi một số ứng dụng, sử dụng Visitor để đặt thao tác trong những ứng dụng cần thiết.

Những lớp xác định cấu trúc đối tượng hiếm khi thay đổi , nhưng bạn phải thường xuyên phải define những thao tác mơi trên cấu trúc.

Thay đổi các lớp cấu trúc đối tượng yêu cầu việc định nghĩa lại giao diện tới tất cả các visitor, điều này là thiết yếu. Nếu các lớp cấu trúc đối tượng thay đổi thường xuyên sau đó thì tốt hơn là định nghĩa các thao tác trong những lớp đó.

3.2.5.11.3 Kết quả

Visitor làm cho việc thờm cỏc thao tác mới dễ dàng.

Một Visitor tập trung nhiều thao tác quan hệ và phân chia những thao tác không quan hệ.

Việc thêm vào các lớp ConcreteElement là khó.

Xem xét thông qua các biểu đồ lớp.

Tổng kết lại trạng thái.

Phá vỡ tinh đóng gói


3.2.5.11.4 Cài đặt

Việc phải giải quyết tăng gấp đôi.

Phân quyền trách nhiệm để chuyển tải cấu trúc đối tượng.



Kết luận: Chain sẽ giải quyết về số lượng các đối tượng, tất cả các đối tượng này cú thờ tồn tại trong cùng một hệ thống.

Chain of responsibility minh hoạ những điểm khác nhau trong các bp, không phải là tất cả đều xác định các mối quan hệ giữa các lớp đối tượng này. Chain of responsibility mô tả sự tác động qua lại giữa số các đối tượng.Trong Command, Token đại diện cho một số đối tượng State tại một thời điểm xác định. Trong cả hai trường hợp này, token có thể có một đại diện phức tạp nhưng client thì chưa có điều này.

Các giao diện Subject và Object trong mẫu Observer được thiết kế cho những sự thay đổi thông tin, vì vậy mẫu Observer là tốt nhất cho các đối tượng kết nối khi cú cỏc dữ liệu phụ thuộc lẫn nhau giữa chúng.

Mediator mẫu kết nối các đối tượng bằng việc đề cập đến nhau gián tiếp thông qua một đối tượng mediator.



Каталог: books -> luan-van-de-tai -> luan-van-de-tai-cd-dh
luan-van-de-tai-cd-dh -> Thế kỷ 21, cùng với sự phát triển nh­ vũ bão của khoa học kỹ thuật, của công nghệ thông tin. Sự phát triển kinh tế tác động đến tất cả mọi mặt đời sống kinh tế xã hội
luan-van-de-tai-cd-dh -> VIỆN ĐẠi học mở HÀ NỘi khoa công nghệ thông tin đỒ Án tốt nghiệP ĐẠi họC
luan-van-de-tai-cd-dh -> Phần một : Tình hình thu hút vốn đầu tư trên thị trường vốn việt nam hiện nay
luan-van-de-tai-cd-dh -> TRƯỜng đẠi học cần thơ khoa công nghệ BỘ MÔN ĐIỆn tử viễn thôNG
luan-van-de-tai-cd-dh -> Em xin chân thành cảm ơn! Vị Xuyên, ngày 19 tháng 5 năm 2012 sinh viêN
luan-van-de-tai-cd-dh -> PHẦn I mở ĐẦu tầm quan trọng và SỰ ra đỜi của giấY
luan-van-de-tai-cd-dh -> Đề tài: Tìm hiểu về vấn đề sử dụng hợp đồng mẫu trong đàm phán ký kết hợp đồng mua bán ngoại thương và thực tiễn ở Việt Nam
luan-van-de-tai-cd-dh -> Đề tài phân tích thực trạng kinh doanh xuất khẩu cà phê nhân của các doanh nghiệP
luan-van-de-tai-cd-dh -> Giao tiếp máy tính và thu nhận dữ liệU ĐỀ TÀI: TÌm hiểu công nghệ 4g lte

tải về 396.06 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương