Template Method Pattern Là Gì

  -  

Trong quy trình phát triển áp dụng, chúng ta gồm các component khác nhau có sự tương đồng đáng kể, tuy nhiên bọn chúng ko sử dụng interface/ abstract class chung, dẫn mang đến code duplicate nghỉ ngơi các chỗ. Nếu mong biến đổi chung mang đến toàn bộ component, bọn họ nên đi sửa ngơi nghỉ từng địa điểm trong component, có tác dụng tốn các chi phí không cần thiết. trong số những phương pháp để giải quyết và xử lý vấn đề này là sử dụng Template Method Pattern.

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


Template Method Pattern là gì?

Define the skeleton of an algorithm in an operation, deferring some steps to lớn client subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.

Template Method Pattern là 1 Một trong những Pattern thuộc nhóm hành vi (Behavior Pattern). Pattern này nói rằng “Định nghĩa một bộ form của một thuật toán thù trong một công dụng, chuyển giao câu hỏi thực hiện nó cho những lớp nhỏ. Mẫu Template Method cho phép lớp con có mang lại cách thực hiện của một thuật toán, mà lại không hẳn biến hóa kết cấu thuật toán“.

Xem thêm: 4 Từ Bạn Sẽ Nói Khi Gặp Lại Người Yêu Cũ Nói Gì Cho Ngầu Nhất Làm Nyc Cứng Họng

Vấn đề này Tức là Template method hỗ trợ cho họ làm cho một cỗ khung (template) cho 1 sự việc đã yêu cầu giải quyết. Trong số đó những đối tượng người dùng rõ ràng sẽ sở hữu được cùng quá trình thực hiện, tuy thế trong mỗi bước tiến hành kia rất có thể khác biệt. Vấn đề này sẽ làm cho một phương thức truy cập giống như nhau tuy thế tất cả hành động cùng công dụng khác biệt.

Template Method Pattern được sử dụng không hề ít trong tế bào hình Abstract – Concrete Class. khi bọn họ ý muốn các Concrete class trường đoản cú thực thi cập nhật theo cách của chính nó, tuy thế đồng thời vẫn đảm bảo an toàn tuận theo mọi buộc ràng khăng khăng từ Abstract class. Ví dụ nhỏng ràng buộc về sản phẩm từ các bước tiến hành, hay buộc ràng về tài liệu đầu vào, cổng đầu ra, …

Trong Template method pattern, Abstract class định nghĩa ra một template method để triển khai một công dụng như thế nào kia. Template method này đã Gọi mang đến những method không giống mặt trong Abstract class nhằm sinh sản hình thành cỗ khung. Nhưng rất có thể những method kia sẽ không còn được tiến hành bên trong Abstract class, nhưng sẽ tiến hành override cùng triển khai lại bên phía trong các Concrete class.

Xem thêm: Sự Phát Triển Của Trẻ 12 Tháng Tuổi: Lượng Ăn, Cân Nặng, Bé 12 Tháng Biết Làm Gì

Cài đặt Template Method Pattern như vậy nào?

*

PageTemplate.java

package com.thanglon.com.patterns.behavioral.templatemethod.template;public abstract class PageTemplate protected void showHeader() System.out.println("");protected void showNavigation() System.out.println("");protected void showFooter() System.out.println("");protected abstract void showBody();public final void showPage() showHeader();showNavigation();showBody();showFooter();HomePage.java

package com.thanglon.com.patterns.behavioral.templatemethod.template;public class HomePage extends PageTemplate
Overrideprotected void showBody() System.out.println("Content of trang chính page page");DetailPage.java

package com.thanglon.com.patterns.behavioral.templatemethod.template;public class DetailPage extends PageTemplate
Overrideprotected void showBody() System.out.println("Content of detail");ContactPage.java

package com.thanglon.com.patterns.behavioral.templatemethod.template;public class ContactPage extends PageTemplate
Overrideprotected void showNavigation() // Just vì chưng nothing// Because we don"t want to show navigation bar on liên hệ page
Overrideprotected void showBody() System.out.println("Content of contact page");TemplateMethodPatternExample.java

package com.thanglon.com.patterns.behavioral.templatemethod.template;public class TemplateMethodPatternExample public static void main(String<> args) PageTemplate homePage = new HomePage();homePage.showPage();System.out.println();PageTemplate detailPage = new DetailPage();detailPage.showPage();System.out.println();PageTemplate contactPage = new ContactPage();contactPage.showPage();Output đầu ra của chương trình:

Content of trang chính page pageContent of detailContent of contact page

Lợi ích của Template Method Pattern là gì?

Tái thực hiện code (reuse), tách trùng lặp code (duplicate): gửi các phần trùng lặp vào lớp cha (abstract class).Cho phnghiền người tiêu dùng override chỉ một trong những phần nhất thiết của thuật tân oán béo, làm cho bọn chúng ít bị ảnh hưởng hơn vị đều thay đổi xẩy ra với các phần không giống của thuật tân oán.

Sử dụng Template Method Pattern khi nào?

Lúc có một thuật toán thù với tương đối nhiều bước và mong ước chất nhận được thiết lập bọn chúng vào lớp nhỏ.Mong hy vọng chỉ gồm một triển khai cách tiến hành trừu tượng duy nhất của một thuật toán.Mong mong muốn hành vi phổ biến thân những lớp nhỏ nên được đặt tại một lớp bình thường.Các lớp cha có thể Điện thoại tư vấn những hành vi trong các lớp nhỏ của chúng một cách thống tốt nhất (step by step). Tài liệu tham khảo:

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