模版方法设计模式

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

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

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

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

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

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

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

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

程序示例:

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

}

猜你喜欢

转载自blog.csdn.net/Curry7895/article/details/82690170