大话设计模式读后感之模板方法模式

来源:互联网 发布:simcms二手车源码 编辑:程序博客网 时间:2024/06/13 07:56

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

在JDK中用到

模板方法模式(Template Method)

java.io.InputStream, java.io.OutputStream, java.io.Readerjava.io.Writer的所有非抽象方法

java.util.AbstractList, java.util.AbstractSetjava.util.AbstractMap的所有非抽象方法

javax.servlet.http.HttpServlet#doXXX()


文中拿考试卷作为例子

考试卷接口

/** * Created with Intellij IDEA. * User : Yebinghuan * Created on 2017/8/9. * Description : *  试卷逻辑 */public interface TestPaper {    //考题1    public void examQuestions1();    //考题2    public void examQuestions2();    //答案    public String  answer1();    //答案    public String  answer2();}


考试卷具体方法

/** * Created with Intellij IDEA. * User : Yebinghuan * Created on 2017/8/9. * Description : */public class TestPaperImpl implements TestPaper{    @Override    public void examQuestions1() {        System.err.println("1. 下面哪些是Thread类的方法()");        System.err.println("A start() B run()   C exit()  D getPriority()");        System.err.println("答案:"+answer1());    }    @Override    public void examQuestions2() {        System.err.println("2.下面关于java.lang.Exception类的说法正确的是()");        System.err.println("A 继承自Throwable      B Serialable      CD 不记得,反正不正确");        System.err.println("答案:"+answer2());    }    @Override    public String answer1() {        return "";    }    @Override    public String answer2() {        return "";    }}

Main
public class Main {    public static void main(String[] args) {        Main m=new Main();        TestPaperImpl s1=m.new Student1();        TestPaperImpl s2=m.new Student2();        s1.examQuestions1();        s1.examQuestions2();        //学生2的答案        s2.examQuestions1();        s2.examQuestions2();    }    class  Student1 extends  TestPaperImpl{        @Override        public String answer1() {            return "ABD";        }        @Override        public String answer2() {            return "A";        }    }    class  Student2 extends  TestPaperImpl{        @Override        public String answer1() {            return "A";        }        @Override        public String answer2() {            return "A";        }    }}


模板方法模式分析

1、模板方法模式提供了一个很好的复用平台。 提高了复用性

2、也方便一次性维护试题

原创粉丝点击