欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

模版方法设计模式

程序员文章站 2022-07-14 09:03:44
...

定义:定义一个操作中某种算法的框架,而将一些步骤延迟到子类中。模版方法模式使得子类在不改变一个算法结构的前提下,对某些步骤实现个性化定义。

一个父类:(两类方法)模版方法步骤方法 

模版方法:即实现某种算法的方法步骤,而这些步骤都是调用步骤方法完成的。

步骤方法:即完成模版方法的每个阶段的方法。每个步骤方法完成某一特定的、完成总算法的一部分功能。

                 有三种类型:抽象方法、最终方法与钩子方法。

抽象方法:子类个性化定义,子类必须实现

最终方法:子类不能重写,对所有子类都是一样的。

钩子方法:父类给出默认实现,子类也可以重写。

 

程序示例:

Shopping.java

package TemplateMethodParttern;

public abstract class Shopping {
	    //模版方法
		public void buyGoods(){
				userLogin();
				buy();
				pay();
		}
		//子类不能重写的方法(最终方法)
		public final void userLogin() {
			System.out.println("用户登录");
		}
		
		//子类必须实现(抽象方法)
		public abstract void buy();
		
		
		//子类选择重写支付(钩子方法)
		public void pay() {
			System.out.println("使用银联卡支付");
		}

}

 ShoesShopping.java

package TemplateMethodParttern;

public class ShoesShopping extends Shopping{

	@Override
    //实现抽象方法
	public void buy() {
		System.out.println("购买红蜻蜓皮鞋");
	}

}

ClothesShopping.java

package TemplateMethodParttern;

public class ClothesShopping extends Shopping {
    //实现抽象方法
    @Override
	public void buy(){
		 System.out.println("购买七匹狼男装");
	}
    //重写钩子方法
	@Override
	public void pay(){
		 System.out.println("使用支付宝付款");
	}
}

MyTest.java

package TemplateMethodParttern;

public class MyTest {

	public static void main(String[] args) {
		Shopping shoesShopping = new ShoesShopping();
		shoesShopping.buyGoods();
		
		Shopping clothesShopping = new ClothesShopping();
		clothesShopping.buyGoods();
	}

}