Strategy Pattern Là Gì

     

Chứa một vài tình huống, những lớp chỉ không giống nhau về hành động của chúng. Trong trường hợp như vậy, ý tưởng phát minh sáng tạo tốt nhất là hầu như các bạn sẽ tách biệt các thuật toán trong các những lớp đơn độc để có chức năng lựa chọn các thuật toán rất khác nhau trong thời gian chạy (run-time). ý tưởng này được gọi bằng Strategy Pattern, một pattern giúp chúng ta giải quyết và xử trí vụ việc về việc việc cố đổi, giống như như State thiết kế Pattern.

Bạn đang xem: Strategy pattern là gì

Bài Viết: Strategy pattern là gì


Strategy Pattern là gì?

Define a family of algorithms, encapsulate each one, với make them interchangeable. Strategy lets the algorithm vary independently from the clients that use it.

Strategy Pattern là 1 trong số những Pattern nằm trong đội hành vi (Behavior Pattern). Nó có thể chấp nhận được định nghĩa tập hợp những thuật toán, đóng gói từng thuật toán lại, and thuận tiện và đơn giản chuyển đổi biến hóa năng động các thuật toán phía phía bên trong object. Strategy được phép color toán đổi khác chủ quyền khi người dùng sử dụng chúng.

Chân thành và ý nghĩa sự thật của Strategy Pattern là giúp bóc tách rời phần giải quyết và xử lý một tính năng cụ thể bay ra khỏi đối tượng người dùng người sử dụng người tiêu dùng hàng. Tiếp đến làm cho một tập hợp những thuật toán để xử lý và xử lý tác dụng đó & lựa lựa chọn thuật toán làm sao mà bọn họ cảm nhận đúng đắn nhất thời điểm xúc tiến chương trình. Mẫu mã xây dựng này thường được sử dụng để thay thế sửa chữa thay vậy thế cho bài toán thừa kế, khi muốn ngã ngũ việc theo dõi and biến đổi một công dụng qua không ít lớp con.


Thiết để Strategy Pattern như thế nào?


*

SortStrategy.java

package com.putago.vn.patterns.behavioral.strategy.sort;import java.util.Danh sách;public interface SortStrategy QuickSort.java

package com.putago.vn.patterns.behavioral.strategy.sort;import java.util.Danh sách;public class QuickSort implements SortStrategy Overridepublic void sort(Danh sách items) System.out.println(“Quick sort”);MergeSort.java

package com.putago.vn.patterns.behavioral.strategy.sort;import java.util.Danh sách;public class MergeSort implements SortStrategy Overridepublic void sort(Danh sách items) System.out.println(“Merge sort”);SelectionSort.java

package com.putago.vn.patterns.behavioral.strategy.sort;import java.util.Danh sách;public class SelectionSort implements SortStrategy Overridepublic void sort(Danh sách items) System.out.println(“Selection sort”);SortedList.java

SortStrategy.java

package com.putago.vn.patterns.behavioral.strategy.sort;import java.util.ArrayList;import java.util.Danh sách;public class SortedList private SortStrategy strategy;private danh sách items = new ArrayList();public void setSortStrategy(SortStrategy strategy) this.strategy = strategy;public void add(String name) items.add(name);public void sort() strategy.sort(items);StrategyPatternExample.java

package com.putago.vn.patterns.behavioral.strategy.sort;public class StrategyPatternExample public static void main(String args) SortedList sortedList = new SortedList();sortedList.add(“Java Core”);sortedList.add(“Java design Pattern”);sortedList.add(“Java Library”);sortedList.add(“Java Framework”);sortedList.setSortStrategy(new QuickSort());sortedList.sort();sortedList.setSortStrategy(new MergeSort());sortedList.sort();Output của chương trình:

Quick sortMerge sort

Ví dụ Strategy Pattern với ứng dụng giao dịch thanh toán giao dịch thanh toán giao dịch trả chi phí online

Code y y giống như như ví dụ trên, các sung sướng xem bên trên Github.

Xem thêm: Meaning Of At Short Notice Là Gì ? Định Nghĩa, Ví Dụ, Giải Thích

Quyền lợi của Strategy Pattern là gì?

Ưng ý một sự sửa chữa thay thay cho thừa kế.

Cần sử dụng Strategy Pattern bao giờ?

Khi mong muốn rất gồm thể chuyển đổi các thuật toán được thực hiện phía bên trong một đối tượng người sử dụng người sử dụng quý người sử dụng tại thời gian run-time.Khi gồm một đoạn mã dễ nạm đổi, và muốn tách bóc chúng thoát thoát khỏi chương trình chủ yếu để tiện lợi và đơn giản và dễ dàng bảo trì.Tránh sự rắc rối, khi bắt buộc hiện thực một công dụng gì đấy qua không ít lớp con.Cần bịt dấu sự vất vả, cấu trúc phía bên trong của thuật toán.


Đối chiếu Strategy Pattern vs State Pattern

Sự phụ thuộc vào (dependency):

Strategy Pattern không lâu dài sự phụ thuộc như State. Bất cứ loại trạng thái nào cũng sẽ hoàn toàn có thể được khởi sản xuất một chiêu trò chủ quyền, bọn chúng chưa chắc chắn rằng đến được cuộc đời sót của đa số Strategy khác. Ví dụ: người tiêu dùng rất rất có thể lựa chọn giải thuật thu xếp, phương pháp thanh toán giao dịch thanh toán giao dịch trả tiền, nén file rar/zip, xuất giải trình ra tệp tin excel/ csv, …

Mục tiêu sử dụng (intent) :

Strategy Pattern gửi ra quyết định chiêu trò thiết kế một vài giải pháp hành động, sử dụng Strategy lúc chúng ta phải rộp vấn how.Trong đa số lúc State Pattern đưa ra quyết định bao giờ để xây đắp chúng, sử dụng Strategy lúc chúng ta phải bỏng vấn when/ what (state or type).

Xem thêm: Xem Jav Là Gì ? Những Điều Bí Mật Trong Ngành Phim 18+ Nhật Bản

Thời điểm khởi chế tạo ra (binding time):

Strategy Pattern là 1 mô hình khởi tạo ra một lần, không tồn trên sự giao vận trạng thái.Trong phần đông lúc State Pattern thì năng động hơn (rất rất có thể tương đối nhiều lần), gồm sự luân chuyển từ tinh thần này sang trạng thái khác. State Pattern rất hoàn toàn có thể xem như là trường hợp giải phóng và mở rộng của Strategy Pattern.

Design Patterns: Elements of Reusable Object-Oriented Software – GOFDesign Pattern for dummies