博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
北风设计模式课程---25、模板方法模式
阅读量:7099 次
发布时间:2019-06-28

本文共 2875 字,大约阅读时间需要 9 分钟。

北风设计模式课程---25、模板方法模式

一、总结

一句话总结:

模板方法就是指定算法步骤,具体不同的子类实现不同的算法

 

1、什么是模板方法模式?

指定算法步骤,具体不同的子类实现不同的算法:它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。

 

Template Method模式也叫模板方法模式,是

行为模式之一,它把具有特定步骤算法中的某些
必要的处理委让给抽象方法,通过子类继承对抽
象方法的不同实现改变整个算法的行为。

 

2、模板方法模式的应用场景?

- 具有统一的操作步骤或操作过程:在模板类中
- 具有不同的操作细节:在具体的类中
- 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同

 

3、模板方法模式的角色和职责?

AbstractClass:抽象类的父类:
ConcreteClass:具体的实现子类:
templateMethod():模板方法:MakeCar.java
method1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java

 

4、模板方法模式 为什么叫 模板方法模式?

模板方法就是指定算法步骤,具体不同的子类实现不同的算法
/* * 组装车 */public abstract class MakeCar {    //组装车头    public abstract void makeHead();        //组装车身    public abstract void makeBody();        //组装车尾    public abstract void makeTail();        public void make() {        this.makeHead();        this.makeBody();        this.makeTail();    }}

 

 

 

二、内容在总结中

1、相关知识

AbstractClass:抽象类的父类:

ConcreteClass:具体的实现子类:
templateMethod():模板方法:MakeCar.java
method1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java

 

 

2、代码

AbstractClass:抽象类的父类:

 

ConcreteClass:具体的实现子类:

 

templateMethod():模板方法:MakeCar.java

MakeCar.java

/* * 组装车 */public abstract class MakeCar {    //组装车头    public abstract void makeHead();        //组装车身    public abstract void makeBody();        //组装车尾    public abstract void makeTail();        public void make() {        this.makeHead();        this.makeBody();        this.makeTail();    }}

 

 

method1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java

MakeBus.java、

public class MakeBus extends MakeCar {    public void makeBody() {        System.out.println("bus:组装车身");    }    public void makeHead() {        System.out.println("bus:组装车头");    }    public void makeTail() {        System.out.println("bus:组装车尾");    }}

 

MakeJeep.java、

public class MakeJeep extends MakeCar {    public void makeBody() {        System.out.println("jeep:组装车身");    }    public void makeHead() {        System.out.println("jeep:组装车头");    }    public void makeTail() {        System.out.println("jeep:组装车尾");    }}

 

MakeKa.java

public class MakeKa extends MakeCar {    public void makeBody() {        System.out.println("ka:组装车身");    }    public void makeHead() {        System.out.println("ka:组装车头");    }    public void makeTail() {        System.out.println("ka:组装车尾");    }    }

 

 

客户端实现:

MainClass.java

public class MainClass {    public static void main(String[] args) {        MakeCar bus = new MakeBus();//        bus.makeHead();//        bus.makeBody();//        bus.makeTail();        bus.make();                System.out.println("-------------------");                MakeCar jeep = new MakeJeep();//        jeep.makeHead();//        jeep.makeBody();//        jeep.makeTail();        jeep.make();                System.out.println("-------------------");                MakeCar ka = new MakeKa();        ka.make();    }}

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/11080000.html

你可能感兴趣的文章
iis8.0 https配置教程
查看>>
Linux(centos7)如何安装Zend Optimizer Zend Guard Loader
查看>>
Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析之Scala学习笔记-51...
查看>>
lex&yacc7
查看>>
C++ 语音聊天
查看>>
Javadoc注释的用法
查看>>
异步/同步、阻塞/非阻塞的理解
查看>>
sql中如何调用另一台服务器的数据库查询数据呢?
查看>>
EF+Code First+Database First+Model First,EF开发流程
查看>>
HttpWebRequest的常见错误使用TcpClient可避免
查看>>
报表技术
查看>>
java基础---多线程---volatile详解
查看>>
eclipse中tomcat启动成功,浏览器访问失败
查看>>
中文乱码(Python、WEB、ajax)
查看>>
mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)...
查看>>
Go开发之路 -- 流程控制
查看>>
bootstrap:按钮下拉菜单
查看>>
git diff命令
查看>>
LeetCode:Climbing Stairs(DP)
查看>>
STC12C5A60S2笔记7(定时器)
查看>>