• 设计模式——模板方法模式


          模板方法模式:模板方法模式是编程中经常用到的模式,它定义了一个操 作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在 不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。

         核心:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不 能确定。因此采用工厂方法模式将这个节点的代码实现转移给子类完成 即:处理步骤父类中定义好,具体实现延迟到子类中定义。 模板方法模式的使用场景:实现一个算法时,整体步骤很固定。但是某些部分易变。易变部分可以抽象出来,供子类实现。

         开发中的场景: 数据库访问的封装。 Junit测试 servlet中doget dopost方法调用,HeadFirst中还提到Java CompareTo()方法也相识一个钩子函数。

     

    public abstract class BankTemplate {
    	public void takeNumber() {
    		System.out.println("领取排队号");
    	}
    	//办理具体的业务  这里不能确定这个步骤  不提供实现
    	public abstract void transact();
    	
    	public void feedback() {
    		System.out.println("给出反馈评价");
    		System.out.println("---------end----------");
    	}
    	//步骤是固定的  不能被重写
    	public final void process() {
    		this.takeNumber();
    		//调用具体的子类业务方法。  也称为钩子方法
    		this.transact();
    		this.feedback();
    	}
    
    }
    
    
    public class Client {
    	public static void main(String[] args) {
    		
    		BankTemplate bank1 = new BankTemplate() {
    			@Override
    			public void transact() {
    				System.out.println("取钱");
    			}
    		};
    		bank1.process();
    		BankTemplate bank2 = new BankTemplate() {
    			
    			@Override
    			public void transact() {
    				System.out.println("存钱");
    				
    			}
    		};
    		bank2.process();
    		BankTemplate bank3 = new BankTemplate() {
    			
    			@Override
    			public void transact() {
    				System.out.println("贷款");
    			}
    		};
    		bank3.process();
    		BankTemplate bank4 = new BankTemplate() {
    			
    			@Override
    			public void transact() {
    				System.out.println("还款");
    			}
    		};
    		bank4.process();
    		
    		System.exit(0);
    	}
    
    }
    
  • 相关阅读:
    redis集群redis-cloud搭建
    Linux下搭建redis服务器
    mybatis主键返回
    分布式文件系统FastDFS
    mapper映射文件不发布
    dubbo发布和引用服务
    PageHelper分页插件
    F. Cards and Joy
    E. Paint the Tree 树形dp
    D. Sequence Sorting dp
  • 原文地址:https://www.cnblogs.com/wxisme/p/4540600.html
Copyright © 2020-2023  润新知