zoukankan      html  css  js  c++  java
  • [译]Java 设计模式 之模板方法

    (文章翻译自Java Design Pattern: Template Method

    模板方法设计模式定义了归档特定操作的工作流。它允许子类去修改特定的步奏而不用改变工作流的结构。

    下面的例子表示模板方法模式是怎么工作的。

    类图

    template-method-pattern-class-diagram

    Java 代码

    Vehicle:java定义了一个小型车并且使其可以运作。

    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();
    		}	
    	}
    }
    

    Car:Vehicle的子类,并且定义了具体的方法。

    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!");
    	}
    }
    

    Truck:Vehicle 的子类并且定义了具体的实现方法。

    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!");
     
    	}
    }
    

    testVehicle 方法只接受一个Vehicle,它不在乎是一个car还是一个truck,因为他们是以相同的方式运作的。下面就是针对这个接口的例子。

    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();
    	}
    }
    

    模板设计模式的实际应用

    这个模式用用Spring框架的数据访问对象中(DAO).org.springframework.jdbc.core.JdbcTemplate类有所有和JDBC工作流相同的重复代码块,比如update、query、execute等等。

  • 相关阅读:
    opencv入门踩坑之路(一)
    编写vue的时候(html也一样),限制一个div内可显示的字数
    win10开机后内存占用非常高,但是资源管理器显示的进程占用得很少,可以考虑更新驱动
    java 随机数产生 常用类及方法
    你不会的是这个正则表达式吗?
    系统编程第三次上机
    Java第三次上机随笔
    系统编程第二次实验
    Java第二次上机随笔
    面向对象-Java MOOC翁恺老师第一次作业
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4214742.html
Copyright © 2011-2022 走看看