java之设计模式---模板设计模式

1、模板设计模式概念:

   定义一个操作中算法的框架,而且将一些步骤延续子类中,使得子类可以不改变算法的结构即可重定义该算法中某些特定步骤。

2、类型:行为类模式

3、简介:

模板方法模式由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种:

1)抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现。

2)模板方法:由抽象类声明并加以实现。一般来说,模板方法调用抽象方法来完成主要的逻辑功能,并且,模板方法大多会在定义为final类型,指明主要的逻辑功能在子类中不能被重写。

3)钩子方法:由抽象类声明并加以实现。但是子类可以去扩展,子类可以通过扩展钩子方法来影响模板方法的逻辑。

4、作用:

 1) 抽象类的任务主要是用来搭建逻辑的框架,通常由经验丰富的人员编写,因为抽象类的好坏直接决定程序是否稳定性。

  2)实现类用来实现细节。抽象类中的模板方法正是通过实现类扩展的方法来完成业务逻辑。只要实现类中的扩展方法通过了单元测试,在模板方法正确的前提下,整体功能不会出现错误。

5、适合场景以及优点:

1)易于扩展:一般来说,抽象类中的模板方法不易发生改变的部分,而抽象方法是容易发生变化的部分,因此通过增加实现类一般可以很容易实现功能的扩展,符合开闭原则。

2)便于维护:对于模板方法模式来说,正是由于他们主要逻辑相同,才使用模板方法,假如不使用模板方法,这些相同的代码散乱分布在不同的类中,维护起来非常不方便。

3)比较灵活:因为有钩子方法,因此,子类实现也可以影响父类中主要的逻辑

4) 适用场景:在多个子类拥有相同的方法,并且这些方法逻辑相同,可以考虑使用模板方法模式,在程序的主框架相同,细节不同的场合下,比较适合这个模式。

6、原码解读:

1)模板类

package com.jxau.ruanjian1201.Pattern.Template;

public abstract class Template {
	
	protected abstract int Comparison(int a,int b);
	
	public void showSortResult(int a,int b){
		int max = this.Comparison(a,b);
		System.out.println("两者之间大小"+max);
	}
	
}
2)实现类

package com.jxau.ruanjian1201.Pattern.Template;

public class Realization extends Template{

	@Override
	protected int Comparison(int a, int b) {
		// TODO Auto-generated method stub
		return a>b?a:b;
	}
}

3)测试类

package com.jxau.ruanjian1201.Pattern.Template;

public class Test {

	public static void main(String[] args) {
		Template t  = new Realization();
		t.showSortResult(3, 7);
	}
}
4)测试结果




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值