zoukankan      html  css  js  c++  java
  • 第十话-模板方法模式

    一个mo子里刻出来的?NO,NO,NO应该是一个mu子里立马出来的。今天看了模板方法模式,一起学习了。
    一、什么是模板方法模式?
    定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类能够不改变一个算法的结构就可以重定义该算法的某些特定步骤。
    请大家细细品味定义,模板方法模式,父类仅仅考虑骨架,子类仅仅考虑血肉。

    有一些不必父类做的事情要放到子类中去。


    二、模板方法模式有哪些应用?
    应用太广泛了。或许你已经悄悄的用了N年了。由于此模式能够封装不变部分。扩展可变部分。所以,我们要提取公共部分代码。便于维护。你想到的基本都能够使用此模式。


    三、一个小样例


    父类(抽象类;包含基本模板方法和抽象方法。基本模板方法是骨架;抽象方法是留给子类实现的。)
    TestPaper.java
    public abstract class TestPaper {
    public void question1(){
    System.out.println("问题1:请问世界上最大的湖是什么湖?");
    System.out.println("答案1:"+answer1());
    }

    public void question2(){
    System.out.println("问题2:你所知道的最大数?");
    System.out.println("答案2:"+answer2());
    }

    protected abstract String answer1();
    protected abstract String answer2();

    }
    详细子类
    Student1.java
    public class Student1 extends TestPaper {


    @Override
    protected String answer1() {
    // TODO Auto-generated method stub
    return "苏必利尔湖";
    }


    @Override
    protected String answer2() {
    // TODO Auto-generated method stub
    return "3";
    }


    }


    Student2.java


    public class Student2 extends TestPaper {


    @Override
    protected String answer1() {
    // TODO Auto-generated method stub
    return "里海";
    }


    @Override
    protected String answer2() {
    // TODO Auto-generated method stub
    return "1";
    }


    }


    測试主类:


    public class Main {


    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    TestPaper paper1 = new Student1();
    TestPaper paper2 = new Student2();
    System.out.println("学生1的试卷:");
    paper1.question1();
    paper1.question2();
    System.out.println("学生2的试卷:");
    paper2.question1();
    paper2.question2();

    }


    }


    四、小结
    忘了是在哪个大牛博客里看到的了。假设你仅仅想学习一个设计模式,那就学习模板方法模式吧。


    模板方法模式非常easy,但有用性强,而且使用广泛。

    所以,学习吧。

    嘿嘿。下一话:迪米特法则

  • 相关阅读:
    Java中如何判断一个字符串是否为数字
    Web发展简史
    常用编程语言
    浏览器运行原理
    [LeetCode]69. x 的平方根(数学,二分)
    [计算机网络]TCP/IP协议-运输层
    [剑指Offer]33-根据后序序列判断是否能组成BST
    [剑指Offer]17-打印从1到最大的n位数(递归)
    [剑指Offer]56-数组中数字出现的次数(位运算)
    [剑指Offer]18-题目一:删除链表的节点 题目二:删除链表中重复节点
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7100131.html
Copyright © 2011-2022 走看看