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