Template Method Pattern

Nội dung: Vẫn sẽ tựa như các bài trước chúng ta sẽ đi theo 3 phần chính:

Tổng quan tiền về Template Method
Cách thực hiện Template MethodỨng dụng của Template Method trong lập trình sẵn IOS

Tổng quan liêu về Template Method

Là một pattern thuộc nhóm behavior - khái niệm một bộ khung của một thuật toán trong một chức năng, chuyển giao việc triển khai nó cho các lớp con. Template Method Pattern được cho phép lớp bé định nghĩa lại cách triển khai của một thuật toán, nhưng mà không phải đổi khác cấu trúc thuật toán.

Bạn đang xem: Tìm hiểu template pattern trong java, tìm hiểu template pattern

Điều này tức là Template method giúp cho họ tạo bắt buộc một cỗ khung (template) mang đến một vụ việc đang đề xuất giải quyết. Trong những số đó các đối tượng rõ ràng sẽ có cùng công việc thực hiện, nhưng trong mỗi bước thực hiện đó hoàn toàn có thể khác nhau. Điều này sẽ khiến cho một phương pháp truy cập kiểu như nhau tuy thế có hành vi và kết quả khác nhau.

*

Các thành phần của một Template Method

*

Trong đó thì:

Abstract
Class(Protocol)
:Định nghĩa những phương thức trừu tượng mang lại từng bước có thể được kiểm soát và điều chỉnh bởi những lớp con.Cài để một thủ tục duy nhất điều khiển và tinh chỉnh thuật toán và gọi công việc riêng lẻ vẫn được thiết lập ở các lớp con.Concrete
Class
: là 1 trong những thuật toán núm thể, setup các cách thức của Abstract
Class. Những thuật toán này ghi đè lên các phương thức trừu tượng để cung ứng các triển khai thực sự. Nó cấp thiết ghi đè thủ tục duy nhất đã được thiết lập ở Abstract
Class (template
Method).

Việc áp dụng template method có rất nhiều lợi ích trong việc lập trình

Tái thực hiện code (reuse), tránh đụng hàng code (duplicate): đưa đa số phần giống nhau vào lớp phụ vương (abstract class).Cho phép người dùng override chỉ một vài phần nhất định của thuật toán lớn, tạo cho chúng không nhiều bị tác động hơn do những chuyển đổi xảy ra với các phần khác của thuật toán.

Vơi những tiện ích như cầm thì template method rất hay được sử dụng khi:

Khi bao gồm một thuật toán với khá nhiều bước và mong ước cho phép tùy chỉnh cấu hình chúng vào lớp con.Mong mong chỉ gồm một tiến hành phương thức trừu tượng tuyệt nhất của một thuật toán.Mong muốn hành vi phổ biến giữa những lớp con đề nghị được đặt ở 1 lớp chung.Các lớp phụ thân có thể gọi những hành vi trong các lớp con của chúng một biện pháp thống nhất (step by step).

Cách thực hiện Template Method Pattern

Chúng ta vẫn đi vào một trong những ví dụ cụ thể để phát âm hơn về pattern này.

Cấu trúc của một website thường thì gồm các phần header, footer, navigation (menu), body. Riêng rẽ phần body thường xuyên núm đổi, vẫn hiển thị riêng rẽ theo từng trang. Hồ hết phần khác ít khi cầm cố đổi, trừ khi có yêu ước đặt biệt. Gắng vì phải viết tất cả các phần ngơi nghỉ mỗi trang, bạn có thể gom chúng lại cùng đặt trong một template nhằm tái áp dụng mà ko duplicate code ở nhiều nơi.

Xem thêm: Đăng Nhập Một Lần Sso (Single Sign, Single Sign On Sso Là Gì

Đầu tiên họ sẽ đi vào khởi sản xuất một Abstract
Protocol
thương hiệu Page
Template

protocol Page
Template func show
Page() func show
Header() func show
Navigation() func show
Footer() func show
Body()viết extension triển khai các phương thức chung cho các lớp con

extension Page
Template func show
Page() show
Header() show
Navigation() show
Body() show
Footer() func show
Header() print(" ") func show
Navigation() print(" ") func show
Footer() print(" ") Tiến hành khởi tạo các concrete
Class
adopt Page
Template
cùng khởi chế tạo ra Client nhằm thử template method.

class Home
Page: Page
Template func show
Body() print("Content of home page page ") class Detail
Page: Page
Template func show
Body() print("Content of detail ") class Contact
Page: Page
Template func show
Navigation() // Just vị nothing // Because we don"t want to show navigation bar on liên hệ page func show
Body() print("Content of tương tác page ") class Client static func client
Code(use object: Page
Template) object.show
Page() tiến hành kiểm tra kết quả

Client.client
Code(use: Home
Page()) Client.client
Code(use: Detail
Page()) Client.client
Code(use: Contact
Page())kết quả nhận ra như sau:

Content of home page page
Content of detail
Content of contact page
Thông qua lấy một ví dụ trên bọn họ cũng hiểu biện pháp thức hoạt động của template method như thế nào. Giờ chúng ta đi đến vận dụng của pattern này được áp dụng ra làm sao trong IOS.

Ứng dụng của Template Method trong lập trình sẵn IOS

Template Method thể hiện ví dụ nhất vào Overridden Framework Methods cùng Document Architecture in OS XCụ thể là:

Template Method là một xây cất cơ bản của Cocoa và của những object-oriented frameworks nói chung. Chất nhận được các thành phần tùy chỉnh cấu hình của chương trình móc vào một trong những thuật toán, nhưng các thành phần framework xác minh thời điểm và bí quyết chúng thể hiện.Kiến trúc tài liệu được khẳng định bởi App
Kit Framewoks là một thể hiện đơn lẻ và đặc biệt quan trọng của xây cất chung của những phương thức vào framework được ghi đè như là 1 trong sự điều chỉnh của template method. Các ứng dụng Cocoa hoàn toàn có thể tạo và làm chủ nhiều tài liệu, mỗi tài liệu trong hành lang cửa số riêng, hầu như luôn dựa trên phong cách xây dựng tài liệu.

Trong vượt trình trở nên tân tiến ứng dụng, bọn họ có các component khác nhau có sự tương đương đáng kể, nhưng chúng không thực hiện interface/ abstract class chung, dẫn cho code duplicate ở những nơi. Ví như muốn đổi khác chung cho tất cả component, bọn họ phải đi sửa sống từng nơi trong component, có tác dụng tốn nhiều chi phí không buộc phải thiết. Một trong những phương pháp để giải quyết vụ việc này là sử dụng Template Method Pattern.Bạn đã xem: giới thiệu design patterns template method pattern là gì, template pattern vào java

Template Method Pattern là gì?

Define the skeleton of an algorithm in an operation, deferring some steps khổng lồ 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 giúp cho bọn họ tạo phải một cỗ khung (template) mang lại một vấn đề đang đề nghị giải quyết. Trong những số đó các đối tượng cụ thể sẽ bao 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ẽ làm cho một cách thức truy cập tương tự nhau nhưng mà có hành động và công dụng khác nhau.

Template Method Pattern được sử dụng không ít trong mô hình Abstract – Concrete Class. Khi họ muốn các Concrete class tự thực thi xử lí theo cách của nó, tuy nhiên đồng thời vẫn bảo đảm an toàn tuận theo phần đa ràng buộc một mực từ Abstract class. Ví dụ như ràng buộc về thứ tự công việc thực hiện, hay ràng buộc về tài 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 chức năng nào đó. Template method này sẽ điện thoại tư vấn đến các method khác bên trong Abstract class để tạo dựng nên bộ khung. Nhưng rất có thể các method đó sẽ không còn được tiến hành bên trong Abstract class, mà sẽ tiến hành override và tiến hành lại bên trong các Concrete class.

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


*

Page
Template.java

package com.vuonxavietnam.net.patterns.behavioral.templatemethod.template;public abstract class Page
Template protected void show
Header() System.out.println("");protected void show
Navigation() System.out.println("");protected void show
Footer() System.out.println("");protected abstract void show
Body();public final void show
Page() show
Header();show
Navigation();show
Body();show
Footer();Home
Page.java

package com.vuonxavietnam.net.patterns.behavioral.templatemethod.template;public class Home
Page extends Page
Template Overrideprotected void show
Body() System.out.println("Content of trang chủ page page");Detail
Page.java

package com.vuonxavietnam.net.patterns.behavioral.templatemethod.template;public class Detail
Page extends Page
Template Overrideprotected void show
Body() System.out.println("Content of detail");Contact
Page.java

package com.vuonxavietnam.net.patterns.behavioral.templatemethod.template;public class Contact
Page extends Page
Template Overrideprotected void show
Navigation() // Just vị nothing// Because we don"t want to show navigation bar on contact pageOverrideprotected void show
Body() System.out.println("Content of liên hệ page");Template
Method
Pattern
Example.java

package com.vuonxavietnam.net.patterns.behavioral.templatemethod.template;public class Template
Method
Pattern
Example public static void main(String args) Page
Template home
Page = new Home
Page();home
Page.show
Page();System.out.println();Page
Template detail
Page = new Detail
Page();detail
Page.show
Page();System.out.println();Page
Template contact
Page = new Contact
Page();contact
Page.show
Page();Output của chương trình:

Content of home page page
Content of detail
Content of liên hệ page

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

Tái sử dụng code (reuse), tránh giống nhau code (duplicate): đưa số đông phần đụng hàng vào lớp cha (abstract class).Cho phép người dùng override chỉ một số trong những phần một mực của thuật toán lớn, tạo nên chúng không nhiều bị tác động hơn vày những biến đổi xảy ra với các phần không giống của thuật toán.

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

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

Design Patterns: Elements of Reusable Object-Oriented Software – GOFDesign Pattern for dummies
Chuyên mục: Tài liệu
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *