设计模式之----模板模式

模板方法设计模式
    该设计模式解决的问题是:具有固定算法(步骤)的应用。但这些算法步骤,又针对不同的用户(情况)具有不同的实现方式。

    在该设计模式中,具有两大类方法:模板方法,步骤方法。
      步骤方法又根据其实现情况,分为三种:抽象方法、最终方法、钩子方法。
          抽象方法:要求子类必须要实现的方法。
          最终方法:由final修饰的方法,不能被子类重写的方法。
          钩子方法:具有默认的实现,但可以被子类重写的方法。
一: 设计模板类

    

 1 public abstract class DinnerSever {
 2     //模板方法
 3     public void havingDinner(){
 4     //点餐
 5      order();
 6     //进餐
 7      eat();
 8     //z支付
 9      pay();
10     }
11     //不同的人支付方式不同,但有默认方式现金支付
12     //后边可继承该类并重写该方法..改为其他方式
13     //默认方法
14     public void pay() {
15         System.out.println("正在使用现金支付.....");
16     }
17 //不同点餐吃的方式不同.....此处应该定义为abstract
18     //抽象方法、
19     public abstract void eat();
20     //点餐只能使用ipad.....此方法为唯一且不可变得,用final修饰
21     //最终方法
22     public final void order() {
23         // TODO Auto-generated method stub
24         System.out.println("只能使用ipad点餐.....");
25 //        System.out.println("此方法为底层模板不可变.....");
26     }
27 }二..定义类实现该模板  例:模板使用
 1 //中餐服务
 2 public class China extends DinnerSever {
 3
 4     @Override
 5     //实现抽象方法
 6     public void eat() {
 7         // TODO Auto-generated method stub
 8         System.out.println("来一碗面条.....");
 9     }
10     //重写默认方法
11     @Override
12     public void pay() {
13         System.out.println("中国人可以使用支付宝...微信支付");
14     }
15 }

  模板使用:

 1 public class English extends DinnerSever{
public class Demo {
public static void main(String[] args) {
    China ca = new China();//实现对象
    English eg = new English();
    ca.havingDinner();  //执行方法
    eg.havingDinner();
    }
}

 2     //都需要重新eat方法..
 3     @Override
 4     public void eat() {
 5         // TODO Auto-generated method stub
 6         System.out.println("外国人吃西餐..");
 7     }
 8     //默认使用现金支付...此处可以不写
 9     /*@Override
10     public void pay() {
11         // TODO Auto-generated method stub
12 System.out.println("使用");
13     }*/
14
15 }

三:测试...

over

时间: 2024-10-21 05:17:20

设计模式之----模板模式的相关文章

【设计模式】模板模式

引子 这是一个很简单的模式,却被非常广泛的使用. 之所以简单是因为在这个模式中仅仅使用到了继承关系. 继承关系由于自身的缺陷,被专家们扣上了“罪恶”的帽子. “使用委派关系代替继承关系”, “尽量使用接口实现而不是抽象类继承”等等专家警告,让我们大家对继承“另眼相看”. 其实,继承还是有很多自身的优点所在.只是被大家滥用的似乎缺点更加明显了. 合理的利用继承关系,还是能对你的系统设计起到很好的作用的. 而模板方法模式就是其中的一个使用范例. 定义与结构 模板方法(Template Method)

设计模式之模板模式

模板模式是一个非常简单的行为类模式. 模板方法Gof的定义是:在一个方法里定义算法的骨架,将一些步骤延迟到其子类. 模板模式包含一个抽象的类和它的实现类,我们在抽象类中定义骨架,需要用到的方法都是抽象方法,具体的实现由它的子类来完成. eg: public abstract class Template{ public void printDate(){ // 显示排序后的List sort(list); } public List sort(List list); } public class

设计模式之 - 模板模式(Template Pattern)

引入:这几天在看一本讲spring源码的书<SPRING技术内幕>里面在讲加载配置文件的时候,可以有不同的加载方式,如根据文件系统目录加载配置文件(FileSystemXmlApplicationContext),类路径加载配置文件(ClassPathXmlApplicationContext),以及根据项目上下文目录(XmlWebApplicationContext)加载配置文件.这个在加载的过程中就使用了模板设计模式,所以就来学习下模板设计模式. 1. 模板设计模式在书中定义:  定义一个

设计模式之模板模式 template

设计模式 模板模式如果有一个流程如下step1();step2();step3();step4();step5();其中step3() step5()是需要用户自己编写使用其他步骤是固定的那么可以写成 // 11111.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <memory> using namespace std; class Lib { public:

JAVA设计模式之模板模式

在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现.这就是模板方法模式的用意. 模板方法模式的结构 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术. 模板方法模式需要开发抽象类和具体子类的设计师之间的协作

设计模式-15 模板模式

一 模板模式 定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.也就是说:假如某些操作代码基本相同,只是其中一部分会经常改变,则可以使用模板方法,将不变的部分作为一个模板,将容易变动的部分让子类来实现. 关键代码:在抽象类实现,其他步骤在子类实现. 使用场景: Spirng 中对 Jdbc的支持 类图 : 二 实现代码 1 例子1 1) 回调接口 ICallBack.java public interface ICallB

Spring中的设计模式:模板模式

导读 模板模式在是Spring底层被广泛的应用,比如事务管理器的实现,JDBC模板的实现. 文章首发于作者的微信公众号[码猿技术专栏] 今天就来谈谈「什么是模板模式」.「模板模式的优缺点」.「模板模式的简单演示」.「模板模式在Spring底层的实现」. 什么是模板模式 模板模式首先要有一个抽象类,这个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行.这种类型的设计模式属于行为型模式. 定义:「定义一个操作中的算法骨架,而将算法的一些步骤延

设计模式(7)--模板模式

//7.模板模式 //ver1 //考试试卷类 class TestPaper { public: void TestQuestion1(){} void TestQuestion2(){} virtual string Answer1() { return ""; } virtual string Answer2() { return ""; } }; class TestPaperA : public TestPaper { public: void TestQ

设计模式-12 模板模式

一 模板模式 定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.也就是说:假如某些操作代码基本相同,只是其中一部分会经常改变,则可以使用模板方法,将不变的部分作为一个模板,将容易变动的部分让子类来实现. 关键代码:在抽象类实现,其他步骤在子类实现. 使用场景: Spirng 中对 Jdbc的支持 类图 : 二 实现代码 1 例子1 1) 回调接口 ICallBack.java public interface ICallB

Java设计模式之模板模式(Template )

前言: 最近学习了Glide开源图片缓存框架,在学习到通过使用ModelLoader自定义数据源的时候,Glide巧妙的使用了Java的模板模式来对外暴露处理不同的Url数据源,今天来学习总结一下模板模式. 模板模式(Template ): 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现.这就是模板方法模式的用意. 模式中的角色 抽象