【好程序员训练营】-Java设计模式之模板方法设计模式

模板方法设计模式

 android培训——我的java笔记,期待与您交流!
较为官方的定义:

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

模板方法设计模式较为简单, 在Android中使用的非常常见!, 所以我们务必认真理解其内部原理.
我们可以从一个例子中去理解它, 我相信大家都玩过《石头剪子布 》,让我们从它引出我们的模板方法设计模式

  • 首先我们定义一个抽象类-游戏类,其中的抽象方法就是需要到子类中实现

abstract class Games{
    //play方法就是负责游戏的开始和结果的打印
    public void play(){
        System.out.println("游戏开始:把手背到后面,出拳");
        System.out.println("结果:");
        if(result()){
            System.out.println("胜利");
        }else{
            System.out.println("失败");
        }
    }
    //该抽象方法需要到相应子类中实现
    public abstract boolean result();
}
  • 下面的两个类,仅仅是为了测试而写, GIrl 类和 Boy类继承抽象游戏类, GIrl 和 Boy 出什么拳我们并不清楚, 所以结果(result()) 由该子类类自己决定
    这就是模板方法设计模式的巧妙之处
class Girl extends Games{
    public boolean result(){
        java.util.Random r = new java.util.Random();
        return r.nextBoolean();
    }

}
class Boy extends Games{
    public boolean result(){
        return false;
    }
}
  • 测试Main方法
public class Test{
    public static void main(String[] args){
        Games g = new Girl();
        g.play();

    }


}
  • 运行效果截图:

这里写图片描述

注意: 虽然模板方法设计模式看起来并不复杂, 但在以后的应用中如果理解不深很容易断片!

以上纯属个人见解, 如有不足之处希望有高人指出, 定感激不尽, 如有喜欢交流学习经验请给我留言谢谢.

原创文章, 转载请注明出处

你可能感兴趣的:(java,设计模式)