Mẫu Strategy

Một phần của tài liệu nghiên cứu mẫu thiết kế hướng đối tượng áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web (Trang 39 - 42)

Khi áp dụng thuật toán rút trích thông tin, chúng tôi sử dụng nhiều thuật toán khác nhau để áp dụng tiến hành rút trích phù hợp. Các nhà phát triển thuờng sẽ có giải pháp là viết trực tiếp (hard- coding) những thuật toán vào ngữ cảnh sử dụng (context). Điều này có những điểm bất lợi sau:

• Tạo liên kết cứng giữa các hành vi và ngữ cảnh sử dụng. Thêm thuật toán và thay đổi thuật toán hiện có trở lên khó khăn vì chúng là một phần mã nguồn

• Khi dùng nhiều thuật toán trở lên hệ thống sẽ phức tạp vì chứa đựng mã nguồn lớn. Điều này làm cho chúng chiếm nhiều tài nguyên và khó duy tu bảo dưỡng.

• Mỗi thuật toán tối ưu cho từng trường hợp nhất định. Chúng ta không thể cài đặt tất cả, trong khi ta chỉ dùng 1 số ít thuật toán.

Chúng ta có thể vượt qua những bất lợi nêu trên bằng cách định nghĩa lớp bao bọc các thuật toán. Do đó, chúng tôi đề xuất sử dụng mẫu strategy ở đây. Mẫu Strategy được trình bày tổng quát như sau.

Mẫu Strategy [5] định nghĩa và bao bọc các thuật toán có cùng mục đích trong những lớp có giao diện chung . Làm cho sự thay đổi thuật toán trở lên linh động và độc lập với khách hàng.

Áp dụng: có thể ứng dụng Strategy trong những trường hợp sau:

• N hiều lớp liên quan chỉ khác nhau ở cách xử lý yêu cầu. Với 1 lựa chọn trong những cách xử lý Strategy giúp ta thực hiện trách nhiệm của 1 lớp. • Có nhiều cách thực hiện cùng một thuật toán. Phải cho khách hàng khả năng

lựa chọn cách ưu việt nhất trong sử dụng tài nguyên như chỗ và thời gian. Lên dùng Strategy khi các thuật toán này được thể hiện như môt cơ cấu lớp của các thuật toán.

• Thuật toán dùng dữ liệu mà khách hàng không biết tới. Dùng Strategy để thay thế việc công khai hoá những cấu trúc dữ liệu phức tạp, đặc thù cho thuật toán.

• Khách hàng định nghĩa nhiều cách xử lý khác nhau và những cách xử lý này có thể coi như câu lệnh chia nhánh ( if-then-elsif, switch) trong phương thức. Thay vì dùng cấu trúc điều kiện ta dùng các lớp Strategy cài đặt riêng từng nhánh.

Hình 4-8: Mẫu Strategy

Mô tả các thành phần tham gia trong hình 4-8 như sau

• Strategy (Compositor): Định nghĩa giao diện chung cho các thuật toán được cài đặt. Context dùng giao diện này để gọi những thuật toán được thực hiện trong những ConcreteStrategy (Strategey cụ thể)

• ConcreteStrategy (SimpleCompositor, TeXCompositor, ArrayCompositor): Cài đặt các thuật toán sử dụng giao diện Strategy.

• Context (Composition):

o Được hiệu chỉnh bằng 1 đối tượng Strategy o Bảo dưỡng tham chiếu tới đối tượng Strategy

o Có thể định nghĩa giao diện cho Strategy dùng được dữ liệu của nó

Thuận lợi và hạn chế:

• Thể hiện họ các thuật toán liên quan. Việc kế thừa giúp hiện thực những chức năng chung của các thuật toán.

• Hỗ trợ sự luân phiên giữa các lớp con. Có thể tạo lớp con của lớp Context một cách trực tiếp để tạo cho nó những hành vi khác. Tuy nhiên cách làm này sẽ tạo thành một liên kết cứng giữa các hành vi và lớp Context. N ó trộn lẫn việc thực thi thuật toán với việc thực thi lớp Context làm cho lớp Context khó hiểu, khó duy trì và khó mở rộng.

• Một sự lựa chọn nhiều cách thực thi. Mẫu này cung cấp nhiều cách thực thi khác nhau cho cùng một hành vi

Chương 5 Cài đặt và kiểm thử

Chương này, chúng tôi trình bày phần cài đặt các mẫu thiết kế hướng đối tượng trong ứng dụng hỗ trợ rút trích thông tin theo chủ đề bằng ngôn ngữ lập trình Java. Theo [11], có 2 quá trình trong xây dựng ứng dụng hỗ trợ rút trích thông tin theo chủ đề:

• Quá trình xây dựng các thuộc tính hỗ trợ rút trích thông tin từ trang web Nn • Quá trình xây dựng công cụ hỗ trợ rút trích thông tin từ các trang web Nn

Một phần của tài liệu nghiên cứu mẫu thiết kế hướng đối tượng áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web (Trang 39 - 42)