Java抽象类应用—模板方法模式

模板方法模式(Templete method)

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

例:

 1 package practice1;
 2
 3 import java.util.Random;
 4
 5 public class Test8 {
 6      public static void main(String []args){
 7          Games g=new Girl();
 8          g.play();
 9      }
10 }
11 abstract class Games{
12   public void play(){//定义一个操作中的算法骨架
13       System.out.println("准备");
14       System.out.println("开始");
15       if(result()){
16           System.out.println("赢了");
17       }else{
18           System.out.println("输了");
19       }
20   }
21
22   public abstract  boolean result();//将一些可变部分的实现延迟到子类中
23 }
24
25 class Girl extends Games{
26
27     @Override
28     public boolean result() {
29         Random r=new Random();
30         return r.nextBoolean();
31     }
32
33 }
34 class ModeGirl extends Games{
35
36     @Override
37     public boolean result() {
38         return false;
39     }
40
41 }
时间: 2024-08-01 00:33:19

Java抽象类应用—模板方法模式的相关文章

菜鸟译文(二)——使用Java泛型构造模板方法模式

如果你发现你有很多重复的代码,你可能会考虑用模板方法消除容易出错的重复代码.这里有一个例子:下面的两个类,完成了几乎相同的功能: 实例化并初始化一个Reader来读取CSV文件: 读取每一行并解析: 把每一行的字符填充到Product或Customer对象: 将每一个对象添加到Set里: 返回Set. 正如你看到的,只有有注释的地方是不一样的.其他所有步骤都是相同的. ProductCsvReader.java public class ProductCsvReader {       Set<

Java设计模式之模板方法模式或者说模板设计模式(属于行为型)

抽象类,不变的代码写了,要变化的部分留给子类去实现: package 行为型_模板方法模式; //模板设计模式的意思是把不变定位部分写出来,变化的部分留给子类去实现 public abstract class GetTime { public long getTime() throws Exception{ long start = System.currentTimeMillis();//开始时间 /* //for循环 for(int i=0;i<10000;i++){ System.out.

java设计模式之模板方法模式

注意 本博客摘录于秦小波老师写的<设计模式之禅> 模板方法模式 汽车厂造悍马 假设我们是一个汽车公司,现在有客户来了,要求我们造悍马! 既然上级下来命令那就造呗,但是造悍马你得告诉我们汽车有什么功能啊,客户说了:"能启动车,能停止车,能响,能跑."好,功能出来了,开始造汽车了.类图如下: 抽象悍马模型代码如下: public abstract class HummerModel { /* * 首先,这个模型要能够被发动起来,别管是手摇发动,还是电力发动,反正 * 是要能够发

Java设计模式之模板方法模式(Template Method)

本文继续介绍23种设计模式系列之模板方法模式. 概述 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现.这就是模板方法模式的用意. 比如定义一个操作中的算法的骨架,将步骤延迟到子类中.模板方法使得子类能够不去改变一个算法的结构即可重定义算法的某些特定步骤. 模式中的角色 抽象类(AbstractClass):实现了模板方法,定义了算法的

java设计模式(模板方法模式)

模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,例如想要泡一杯茶或者一杯咖啡,第一步都是将水煮沸,第二部是加入咖啡或者茶,第三部就是将饮料倒入杯子中,第四部就是加入各种调味料.其中第一步和第三部都是一样的,这个就可以定义在基类,而第二步和第四步就是他们之间的差异就可以在具体的子类中去实现.下面就是代码实现. 定义抽象基类,为所有

设计模式-模板方法模式(Go语言描述)

这篇文章我们还是继续我们的设计模式系列, 今天我们带来的一个全新的设计模式在实际开发中大家肯定都遇到过, 可能大家只是不知道它叫模板方法模式而已, 今天我们就来详细的说一下什么是模板方法模式,已经该模式如何运用. 至于什么是模板方法模式, 我们还是老规矩, 先来个定义, 然后上张类图更加直观的看一下. 定义 模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式.让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤. 这个定义还是非常不错的, 至少认真读2遍还是可以理

“Head First 设计模式“ :模板方法模式

模板方法模式 定义:模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤.模板方法就是一个固定步骤的"算法"骨架方法.这个算法的可变部分通过继承,在子类中重载实现.这样就可以在算法骨架不变的情况下,算法细节步骤根据不同的需求进行适应的改变,类图如下: 优点:● 模板方法模式在定义了一组算法,将具体的实现交由子类负责.● 模板方法模式是一种代码复用的基本技术.● 模板方法模式导致一种反向的控制结构,通

(行为型模式一)模板方法模式

package com.modle; import java.util.ArrayList; import java.util.BitSet; import java.util.List; /** * 模板方法模式 * @author k560 * */ public abstract class AbstractMap { /* 获取重复的数字 */ protected abstract List<Integer> getSameData(int[] data); /*获取重复的数字并且逆序

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有