Strategy pattern là gì

trang chủ » Kiến thức xây dựng » Kiến trúc và Thiết kế » Một ví dụ dễ dàng và đơn giản về Strategy Pattern
*

Trong trở nên tân tiến phần mềm nếu khách hàng biết phương pháp vận dụng các mẫu kiến thiết (thiết kế pattern) bạn sẽ lập cập đạt được ứng dụng với kiến thiết dễ dàng mà lại kết quả lúc gia hạn, nâng cấp hoặc không ngừng mở rộng bọn chúng. Một trong những chủng loại xây cất đơn giản và dễ dàng và rất giản đơn xúc tiến nhưng tôi trình bài xích trong nội dung bài viết này đó là Strategy (còn mang tên call khác là Policy). Sau lúc diễn tả cơ bạn dạng về nó tôi đã sử dụng ngữ điệu Java để minh họa mang lại mẫu xây dựng này, bạn sẽ không mất vô số thời gian để nỗ lực được Strategy cùng vận dụng nó vào thực tế đâu, cơ mà biết đâu chúng ta sẽ sử dụng nó mà trù trừ đó là 1 trong pattern nổi tiếng?!

Strategy là một trong những tương đối nhiều các mẫu mã xây cất dành riêng cho phát triển vận dụng với OOPhường, bạn cũng có thể đọc thêm các mẫu xây đắp không giống sinh hoạt đây: http://www.oodesign.com. Đây là pattern chất nhận được những giải thuật khác nhau có thể được chọn lựa trong thời-gian-chạy (run-time). Hay nói cách khác, Strategy khái niệm một họ các giải mã khác nhau, mỗi lời giải được triển khai bởi một tờ (class) cụ thể và chúng hoàn toàn có thể hân oán thay đổi cho nhau tùy thuộc vào ngữ cảnh. Strategy góp những giải thuật khác nhau chủ quyền với client thực hiện nó. Ví dụ, một tờ tiến hành trọng trách đối chiếu tài liệu đầu vào hoàn toàn có thể thực hiện mẫu kiến tạo Strategy để tự động chọn lựa lời giải đến câu hỏi này dựa trên các loại dữ liệu, xuất phát của bọn chúng, chọn lựa của người dùng tuyệt các nguyên tố khác. Những nguyên tố này không được hiểu cho tới thời-gian-chạy (runtime) với lúc đó tùy thuộc theo một số loại dữ liệu nhưng khối hệ thống chọn lựa phương thức so sánh khác biệt. Các giải pháp so sánh được đóng gói trong các đối tượng người dùng cá biệt sẽ được áp dụng vì chưng đầy đủ đối tượng người sử dụng thực hiện Việc này trên các phân vùng không giống nhau của khối hệ thống (hoặc thậm chí sinh hoạt gần như hệ thống không giống nhau) cơ mà không gây ra sự đụng hàng về mã lệnh.

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

Strategy thường được màn biểu diễn bởi UML nhỏng sau:

*
*
*

Sau phía trên họ cùng quan liêu sát mã mối cung cấp của 2 lớp này:

Lớp Student:

public class Student implements Comparable

private String rollNo; private String fullName; private double marks;

public Student(String rollNo, String fullName, double marks) this.rollNo = rollNo; this.fullName = fullName; this.marks = marks;

/* Hai sinh viên so sánh với nhau theo thương hiệu (fullName) */
Override public int compareTo(Student o) if (o == null


Override public String toString() return rollNo + " – " + fullName; Các quý hiếm trả về tùy thuộc vào đối tượng sinh viên tê hoặc mặc dù trực thuộc vào bài toán đối chiếu hai trực thuộc tính fullName của 2 đối tượng người dùng sinch viên.

Xem thêm: Cách Khảo Sát Thị Trường Của Tns Là Gì, Ý Nghĩa Của Từ Tns

Lớp Product:

public class Product implements Comparable private String serial; private String productName; private double price;

public Product(String serial, String productName, double price) this.serial = serial; this.productName = productName; this.price = price;

/* Hai sản phẩm đối chiếu với nhau theo giá thành */
Override public int compareTo(Product o) this.price > o.price) return 1; if (this.price return -1;

return 0;


Override public String toString() return serial + " – " + productName; } Các quý giá trả về tùy trực thuộc vào đối tượng thành phầm kia hoặc tùy trực thuộc vào câu hỏi so sánh nhị ở trong tính price của 2 sản phẩm với nhau.

Xem thêm: Các Hạt Sol Khí Là Gì - Hệ Thống Chữa Cháy Khí Aerosol (Sol Khí)

3. Chương thơm trình minch họa

Chương thơm trình tiếp sau đây miêu tả vấn đề so sánh giữa những team tượng sinc viên cùng nhau và giữa những sản phẩm với nhau. Trong cách làm compare(), Collections (nhập vai trò của lớp Context vào hình mẫu vẽ UML thể hiện Strategy sinh hoạt trên) thiết lập cách thức sort() từ bỏ khẳng định các loại đối tượng người tiêu dùng cùng sử dụng cách làm compareTo() đến phù hợp.

public class Client public static void compare(ArrayList list) if (menu != null &và danh mục.size() > 0) Collections.sort(list); for (Object obj : list) System.out.println(" + " + obj);

public static void main(String<> args) ArrayList students = new ArrayList(); students.add(new Student("A01234", "Minc Le Hoang", 12.5)); students.add(new Student("A01235", "An Nguyen Van", 15.5)); students.add(new Student("A01235", "Tuan Nguyen Anh", 13.5)); students.add(new Student("A01235", "Ha Le Hoang", 17.5));

System.out.println("Sap xep sinch vien: "); //Hệ thống vẫn sử dụng cách làm compareTo() của lớp Student nhằm so sánh những đối tượng người tiêu dùng Sinh viên: Client.compare(students);

ArrayList products = new ArrayList(); products.add(new Product("P0023", "Dell Vostro 3400", 1200)); products.add(new Product("P0012", "IBM Thinpad T60", 1100)); products.add(new Product("P0003", "Vaio Z", 3000)); products.add(new Product("P0303", "HPhường Pavilon", 1230));

System.out.println("Sap xep san pham: "); //Hệ thống đã sử dụng cách thức compareTo() của lớp Product nhằm đối chiếu các đối tượng sản phẩm cùng với nhau: Client.compare(products); Qua VD đơn giản và dễ dàng này vững chắc chúng ta vẫn phần như thế nào phát âm được về Strategy Pattern cùng sự hiện diện của chính nó trong những kiến thiết sẵn có của Java như bạn đã thấy trong Comparable, mong muốn rằng các bạn sẽ vận dụng được chủng loại thi công này cho những bài toán thù rõ ràng của mình :o)


Chuyên mục: Định Nghĩa