这些do方法则是由具体的HttpServlet类提供的.那么这里的service()方法就是一个摸板方法.
七、如图所示:
举例如下:
package design.templatemethod; import java.io.OutputStream; /** * 文件名称:design.singleton.Singleton.java * 创建人:Fei Wong * 创建时间: 2012-06-21 * 电子邮箱:[email protected] * 说明:首先是abstract模版类 * */ public abstract class Document { protected OutputStream is ; /** * 打开文件的方法 * */ public abstract void open(String file) ; /** * 在文件里面写内容的方法 * */ public abstract void write(Object object) ; /** * 关闭资源 * */ public abstract void close() ; /** *模版方法,定义成final是不希望子类覆盖该方法 * */ public final void save(Object object, String file){ open(file) ; write( object ) ; close() ; } } package design.templatemethod; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class WriteTextDocment extends Document { @Override public void close() { try { is.close(); System.out.println( "-----清理资源---" ); } catch (IOException e) { } } @Override public void open(String file) { File file2 = new File(file); try { is = new FileOutputStream(file2); System.out.println( "-----打开文件---" ); } catch (FileNotFoundException e) { throw new RuntimeException(" 打开文件出现异常 "); } } @Override public void write(Object object) { if (object != null) { try { is.write(object.toString().getBytes()); System.out.println( "-----写入文件内容---" ) ; } catch (IOException e) { throw new RuntimeException(" 写入文件异常 "); } } } } package design.templatemethod; /** * 文件名称:design.singleton.Singleton.java * 创建人:Fei Wong * 创建时间: 2012-06-21 * 电子邮箱:[email protected] * 说明:调用测试 * */ public class Main { public static void main(String[] args) { Document document = new WriteTextDocment() ; document.save( "世界你好啊" , "src/design/templatemethod/a.txt") ; } }