• Java设计模式——模板方法设计模式(abstract修饰)


    解释:

    一个抽象类中,有一个主方法,再定义 1...n 个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。

    解决的问题:

    当功能内部一部分实现是确定,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。

    编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,就是一种模板模式。

    抽象类的使用:

    抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式。

    示例:

    /**
     * 此类用于演示模板方法设计模式
     * 
     * 模板类:(抽象父类)
     *         1、实现好的方法(普通方法)
     *         2、没有实现的方法(抽象方法)
     * 
     * 应用类:(普通子类)
     *        1、实现好的方法,不用改造
     *        2、实现父类的抽象方法(改造)
     */
    public class TestTemplate {
        public static void main(String[] args) {
            
            Template t = new Sub1();
            t.caleTimes();
            
            Template t2 = new Sub2();
            t2.caleTimes();
        }
    
    }
    class Sub2 extends Template{
    
        @Override
        public void code() {
            String s = "hello";
            for (int i = 1; i <=50000; i++) {
                s+=i;
            }
        }
    }
    
    class Sub1 extends Template{
    
        @Override
        public void code() {
            long sum=0;
            for (int i = 1; i <=50000; i++) {
                sum+=i;
            }
        }
    }
    abstract class Template{
        /*
         * 功能:计算代码的耗时时间
         */
        public void caleTimes(){
            //记录一下,代码执行前距离1970-1-1 0:0:0的时间差
            long start = System.currentTimeMillis();
            
            //代码
            code();
            
            //记录一下,代码执行后距离1970-1-1 0:0:0 的时间差
            long end = System.currentTimeMillis();
            
            System.out.println("耗时:"+(end-start));
        }
        
        public abstract void code();
        
    }
  • 相关阅读:
    第十二周作业
    第十二周上机练习
    第十一周作业
    第十一周上机练习
    第十周上机作业
    第九周上机练习
    第八周作业
    软件测试第一次作业
    Jsp第二次作业
    JSP第一次作业
  • 原文地址:https://www.cnblogs.com/MWCloud/p/11204039.html
Copyright © 2020-2023  润新知