JAVA学习-设计模式
一、简介
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
二、抄卷纸写答案
-
需求,将卷纸作为模板,每个人的卷纸都相同,只有答案唯一不同。
-
代码实现
模板卷纸类:
public abstract class TestPaper {
public void question1() {
System.out.println("1+1=? a:1 b:2 c:3");
System.out.println(answer1());
}
public void question2() {
System.out.println("1+2=? a:1 b:2 c:3");
System.out.println(answer2());
}
public void question3() {
System.out.println("1+3=? a:1 b:2 c:3 d:4");
System.out.println(answer3());
}
protected abstract String answer1();
protected abstract String answer2();
protected abstract String answer3();
}
卷纸实现类1:
public class TestPaperA extends TestPaper {
@Override
protected String answer1() {
return "a";
}
@Override
protected String answer2() {
return "b";
}
@Override
protected String answer3() {
return "c";
}
}
卷纸实现类2:
public class TestPaperB extends TestPaper {
@Override
protected String answer1() {
return "c";
}
@Override
protected String answer2() {
return "b";
}
@Override
protected String answer3() {
return "a";
}
}
测试类:
public class Test {
public static void main(String[] args) {
System.out.println("A同学试卷:");
TestPaper paperA = new TestPaperA();
paperA.question1();
paperA.question2();
paperA.question3();
System.out.println("B同学试卷:");
TestPaper paperB = new TestPaperB();
paperB.question1();
paperB.question2();
paperB.question3();
}
}
定义一个操作中算法的结构,而将一些步骤的变化,延迟到子类中。不变的永远不需要改动,只需要在子类中将变化的部分进行修改即可。这一模式在实际应用中很是实用。也比较容易理解和掌握,在jdk中这一模式也得到了广泛的应用,当你读源码的时候可以注意一下,体会这一模式的强大之处。
微信扫一扫
关注该公众号