模板方法设计模式

来源:互联网 发布:js触发按钮点击事件 编辑:程序博客网 时间:2024/06/07 14:43

某一种设计模式针对特定的问题,不是万能的,所以要针对特定的场景,去解决问题。

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


例如做煎饼,其流程是一样的,但是每个人的口味和禁忌不一样,有些人爱吃白面,有些人爱吃玉米面,有些人吃辣,有些人不吃辣。应该先搞清楚做煎饼的套路,而具体的实现要根据不同人的口味具体再去做。


看例子,模拟剪刀石头布游戏:

public class Test {

public static void main(String[] args) {

Games g = new Girl();

g.play();

}

}


class Girl extends Games {

@Override

public boolean result() {

java.util.Random r = new java.util.Random();

r.nextBoolean();

}

}


class Girl2 extends Games {

@Ovrride

public boolean result {

return false;

}

}


abstract class Games {

public void play() {

System.out.println("游戏开始,把手背到后面,出拳");

System.out.println("结果:");

if(resutl()) {

System.out.println("恭喜你你赢了");

} else {

System.out.println("不好意思,你输了");

}

}

public abstract boolean result() {//这个方法由子类决定

}

}


在上面的例子中,play()方法就规定了算法的框架,但是其中有一些细节,例如公布结果的result方法不确定,是由子类具体规定的

0 0