• 模板方法


    TemplateTest.java

    package com.atguigu.java;
    /*
     * 抽象类的应用:模板方法的设计模式
     * 
     */
    public class TemplateTest {
    	public static void main(String[] args) {
    		
    		SubTemplate t = new SubTemplate();
    		
    		t.spendTime();
    	}
    }
    
    abstract class Template{
    	
    	//计算某段代码执行所需要花费的时间
    	public void spendTime(){
    		
    		long start = System.currentTimeMillis();
    		
    		this.code();//不确定的部分、易变的部分
    		
    		long end = System.currentTimeMillis();
    		
    		System.out.println("花费的时间为:" + (end - start));
    		
    	}
    	
    	public abstract void code();
    	
    	
    }
    
    class SubTemplate extends Template{
    
    	@Override
    	public void code() {
    		
    		for(int i = 2;i <= 1000;i++){
    			boolean isFlag = true;
    			for(int j = 2;j <= Math.sqrt(i);j++){
    				
    				if(i % j == 0){
    					isFlag = false;
    					break;
    				}
    			}
    			if(isFlag){
    				System.out.println(i);
    			}
    		}
    
    	}
    	
    }
    
    

    TemplateMethodTest.java

    package com.atguigu.java;
    //抽象类的应用:模板方法的设计模式
    public class TemplateMethodTest {
    
    	public static void main(String[] args) {
    		BankTemplateMethod btm = new DrawMoney();
    		btm.process();
    
    		BankTemplateMethod btm2 = new ManageMoney();
    		btm2.process();
    	}
    }
    abstract class BankTemplateMethod {
    	// 具体方法
    	public void takeNumber() {
    		System.out.println("取号排队");
    	}
    
    	public abstract void transact(); // 办理具体的业务 //钩子方法
    
    	public void evaluate() {
    		System.out.println("反馈评分");
    	}
    
    	// 模板方法,把基本操作组合到一起,子类一般不能重写
    	public final void process() {
    		this.takeNumber();
    
    		this.transact();// 像个钩子,具体执行时,挂哪个子类,就执行哪个子类的实现代码
    
    		this.evaluate();
    	}
    }
    
    class DrawMoney extends BankTemplateMethod {
    	public void transact() {
    		System.out.println("我要取款!!!");
    	}
    }
    
    class ManageMoney extends BankTemplateMethod {
    	public void transact() {
    		System.out.println("我要理财!我这里有2000万美元!!");
    	}
    }
    
    
  • 相关阅读:
    Teradata 奇淫技巧
    Java
    搬砖
    js 判断2个对象的值是否相等
    搬砖
    UnsupportedClassVersionError: JVMCFRE003 commons/text/StringEscapeUtils
    杂记
    java查找最新文件
    搬砖
    搬砖
  • 原文地址:https://www.cnblogs.com/fenxiangyuan/p/14397151.html
Copyright © 2020-2023  润新知