Template method pattern là gì

  -  

Trong quá trình cải tiến và phát triển ứng dụng, chúng ta có các component không giống nhau có sự tương đương đáng kể, nhưng bọn chúng không sử dụng interface/ abstract class chung, dẫn mang lại code duplicate ở nhiều nơi. Nếu muốn chuyển đổi chung cho toàn bộ component, họ phải đi sửa ở từng khu vực trong component, làm cho tốn nhiều túi tiền không nên thiết. Một trong các những cách để giải quyết sự việc này là thực hiện Template Method Pattern.

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

Bạn vẫn xem: giới thiệu design patterns template method pattern là gì, template pattern trong java

Template Method Pattern là gì?

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

Điều này tức là Template method góp cho họ tạo buộc phải một bộ khung (template) mang đến một vụ việc đang đề nghị giải quyết. Trong số đó các đối tượng ví dụ sẽ gồm cùng các bước thực hiện, nhưng trong mỗi bước tiến hành đó có thể khác nhau. Điều này sẽ tạo nên một phương thức truy cập kiểu như nhau tuy thế có hành động và hiệu quả khác nhau.

Xem thêm: Ad Ơi Em Đi Sa Bác Sĩ Ghi Là Độ Trưởng Thành 2 Là Gì, Độ Trưởng Thành Của Thai Nhi Theo Từng Cấp Độ

Template Method Pattern được sử dụng không hề ít trong mô hình Abstract – Concrete Class. Khi họ muốn những Concrete class tự thực thi xử lí theo cách của nó, nhưng đồng thời vẫn bảo đảm tuận theo rất nhiều ràng buộc nhất định từ Abstract class. Ví dụ như ràng buộc về thứ tự quá trình thực hiện, tuyệt ràng buộc về dữ liệu đầu vào, đầu ra, …

Trong Template method pattern, Abstract class định nghĩa ra một template method để tiến hành một tác dụng nào đó. Template method này sẽ hotline đến các method khác bên trong Abstract class để tạo dựng nên bộ khung. Nhưng có thể các method đó sẽ không còn được tiến hành bên trong Abstract class, mà sẽ được override và triển khai lại phía bên trong các Concrete class.

Xem thêm: Tác Dụng Của Lá Mãng Cầu Xiêm Có Tác Dụng Gì ? 10 Tác Dụng Của Lá Mãng Cầu Xiêm

Cài để Template Method Pattern như thế nào?


*

PageTemplate.java

package com.hanic.com.vn.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.hanic.com.vn.patterns.behavioral.templatemethod.template;public class HomePage extends PageTemplate Overrideprotected void showBody() System.out.println("Content of trang chủ page page");DetailPage.java

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

package com.hanic.com.vn.patterns.behavioral.templatemethod.template;public class ContactPage extends PageTemplate Overrideprotected void showNavigation() // Just vị nothing// Because we don"t want to show navigation bar on contact pageOverrideprotected void showBody() System.out.println("Content of tương tác page");TemplateMethodPatternExample.java

package com.hanic.com.vn.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 của chương trình:

Content of trang chủ page pageContent of detailContent of tương tác page

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

Tái thực hiện code (reuse), tránh trùng lặp code (duplicate): đưa phần lớn phần trùng lặp vào lớp thân phụ (abstract class).Cho phép người dùng override chỉ một trong những phần một mực của thuật toán lớn, tạo cho chúng ít bị tác động hơn vày những biến hóa xảy ra với các phần khác của thuật toán.

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

Khi gồm một thuật toán với nhiều bước và mong ước cho phép tùy chỉnh chúng vào lớp con.Mong ý muốn chỉ có một thực hiện phương thức trừu tượng nhất của một thuật toán.Mong mong muốn hành vi tầm thường giữa những lớp con buộc phải được đặt tại 1 lớp chung.Các lớp thân phụ có thể gọi các hành vi trong những lớp con của bọn chúng một cách thống độc nhất vô nhị (step by step). Tài liệu tham khảo:

Design Patterns: Elements of Reusable Object-Oriented Software – GOFDesign Pattern for dummiesChuyên mục: Tài liệu