zoukankan      html  css  js  c++  java
  • 模板方法

    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万美元!!");
    	}
    }
    
    
  • 相关阅读:
    进程与线程(二)(线程池)
    进程与线程(一)(基本定义和demo)
    SpringBoot的整合(二、整合redis)
    SpringBoot的整合(一、定时任务task)
    Thymeleaf的学习(二)(常用标签的使用方法)
    程序员常用单词词汇汇总
    程序员代码打字练习题库
    浅谈原型对象和原型链(源于学习整理笔记)
    JS中this的四种用法
    VS code自定义用户代码片段snippet
  • 原文地址:https://www.cnblogs.com/fenxiangyuan/p/14397151.html
Copyright © 2011-2022 走看看