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,但有用性强,而且使用广泛。

    所以,学习吧。

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

  • 相关阅读:
    linux编程 给线程起名字
    c语言的__packed__
    LINUX 命令行编辑快捷键
    linux关于bashrc与profile的区别(转)
    linux查看和修改PATH环境变量的方法
    linux 线程 pthread_create 源码 剖析
    你真的了解【HashMap】么?-一
    Oracle 基础概念
    Java数据库连接池
    JVM内存模型与垃圾回收
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7100131.html
Copyright © 2011-2022 走看看