有多少人曾經殫精竭慮?有多少人溯夜難眠?就是爲了僅僅經過而已。java
多麼多的選擇題,由咱們來塗寫,一次次的皺眉,只爲勝利的那一刻。算法
你看,只有一套題目(其實分AB卷),一套答題紙(也分爲AB),多麼簡單的流程呀,但是爲何咱們的分數差異那麼大呢??spring
Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure.
定義在一個操做中的一個算法框架,把一些步驟推遲到子類去實現。模板方法模式讓子類不須要改變算法結構而從新定義特定的算法步驟。
數據庫
類圖編程
package com.programcreek.designpatterns.templatemethod; abstract public class Vehicle { //set to protected so that subclass can access protected boolean status; abstract void start(); abstract void run(); abstract void stop(); public void testYourVehicle(){ start(); if(this.status){ run(); stop(); } } } package com.programcreek.designpatterns.templatemethod; public class Car extends Vehicle { @Override void start() { this.status = true; } @Override void run() { System.out.println("Run fast!"); } @Override void stop() { System.out.println("Car stop!"); } } package com.programcreek.designpatterns.templatemethod; public class Truck extends Vehicle { @Override void start() { this.status = true; } @Override void run() { System.out.println("Run slowly!"); } @Override void stop() { System.out.println("Truck stop!"); } } import com.programcreek.designpatterns.templatemethod.Car; import com.programcreek.designpatterns.templatemethod.Truck; import com.programcreek.designpatterns.templatemethod.Vehicle; public class Main { public static void main(String args[]){ Car car = new Car(); testVehicle(car); Truck truck = new Truck(); testVehicle(truck); } public static void testVehicle(Vehicle v){ v.testYourVehicle(); } }
應用場景框架
多個子類有公共方法,而且邏輯基本相同ide
對複雜的算法,核心算法設計爲模板方法,細節功能則由各個子類實現this
6.擴展.net
1.在spring中的應用spring jdbc設計
Spring JDBC提供了一套JDBC抽象框架,用於簡化JDBC開發。
Spring主要提供JDBC模板方式、關係數據庫對象化方式、SimpleJdbc方式、事務管理來簡化JDBC編程
Spring提供了3個模板類:
JdbcTemplate:Spring裏最基本的JDBC模板,利用JDBC和簡單的索引參數查詢提供對數據庫的簡單訪問。
NamedParameterJdbcTemplate:可以在執行查詢時把值綁定到SQL裏的命名參數,而不是使用索引參數。
SimpleJdbcTemplate:利用Java 5的特性,好比自動裝箱、通用(generic)和可變參數列表來簡化JDBC模板的使用
非抽象方法 java.io.InputStream, java.io.OutputStream, java.io.Reader和java.io.Writer.
非抽象方法 java.util.AbstractList, java.util.AbstractSet andjava.util.AbstractMap.
javax.servlet.http.HttpServlet, 全部 doXXX() 默認發送一個 HTTP 405 "不容許的方法" 錯誤做爲響應.你能夠改寫或者默認.
reference:
http://www.programcreek.com/2012/08/java-design-pattern-template-method/
http://en.wikipedia.org/wiki/Template_method_pattern
http://book.51cto.com/art/201202/318456.htm
http://my.oschina.net/u/1470003/blog/224031
http://my.oschina.net/aps/blog/85981
http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns
注:以上圖片來自於互聯網,不一一註明了