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

    模板方式模式(TemplateMethod):定义一个操作中的骨架算法,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。

    模板方法模式是通过把不变行为搬移到父类,去除子类中的重复代码。

    TestPager.java类

    package template;
    /**
     * 把不变的行为搬到父类,去除子类重复的代码
     * @author 煞笔
     *
     */
    public abstract class TestPager {
        public void testQuestion1(){
            System.out.println("1+2="+answer1());
            
        }
        public void testQuestion2(){
            System.out.println("3+2="+answer2());
            
        }
        public void testQuestion3(){
            System.out.println("5+2="+answer3());
            
        }
        public abstract int answer1();
        public abstract int answer2();
        public abstract int answer3();
    }

    TestPagerA.java类

    package template;
    
    public class TestPagerA extends TestPager {
    
        @Override
        public int answer1() {
            return 3;
        }
    
        @Override
        public int answer2() {
            return 5;
        }
    
        @Override
        public int answer3() {
            return 7;
        }
    
    }

    TestPagerB.java类

    package template;
    
    public class TestPagerB extends TestPager {
    
        @Override
        public int answer1() {
            return 3;
        }
    
        @Override
        public int answer2() {
            return 5;
        }
    
        @Override
        public int answer3() {
            return 6;
        }
    
    }

    Business.java类

    package template;
    
    public class Business {
    
        public static void main(String[] args) {
            TestPager tp = new TestPagerA();
            tp.testQuestion1();
            tp.testQuestion2();
            tp.testQuestion3();
            tp = new TestPagerB();
            tp.testQuestion1();
            tp.testQuestion2();
            tp.testQuestion3();
        }
    
    }
  • 相关阅读:
    谈谈服务限流算法的几种实现
    使用 MongoDB 存储日志数据
    MongoDB存储引擎选择
    下载一线视频
    spring-boot-starter-redis配置详解
    SpringBoot学习笔记(6) SpringBoot数据缓存Cache [Guava和Redis实现]
    Guava 源码分析(Cache 原理)
    分布式链路跟踪 Sleuth 与 Zipkin【Finchley 版】
    Dubbo x Cloud Native 服务架构长文总结(很全)
    区块链使用Java,以太坊 Ethereum, web3j, Spring Boot
  • 原文地址:https://www.cnblogs.com/ccgjava/p/7062976.html
Copyright © 2011-2022 走看看