文档章节

模板设计模式

y
 yangyangyyyy
发布于 12/07 11:26
字数 485
阅读 6
收藏 0

     在程序开发中你可能经常遇到这种情况,某个要实现的算法分为多个步骤,有些步骤是固定不变的,有些步骤是不固定的,为了提高代码的可扩展性和可维护性,模板设计模式在这种场景下就派上用场了。

    在模板设计模式中,一个算法可以分为多个步骤,每个步骤对应一个方法称为基本方法,步骤的执行顺序是在一个模板方法中定义好的,有些基本方法是固定不变的,有些基本方法是不固定的。在模板设计模式中,模板方法和固定不变的基本方法会在父类中实现,而不固定的基本方法在父类中是抽象方法,其实现被延迟到子类中完成。

如上图所示,在抽象类AbstractClass中Operation_4()方法是固定的基本方法,其实现在父类中。而Operation_2、Operation_3()、Operation_5()是不固定的基本方法,所以在父类中是抽象方法,需要子类去实现。

/***********************************************************************
 * Module:  AbstractClass.java
 * Author:  Administrator
 * Purpose: Defines the Class AbstractClass
 ***********************************************************************/

import java.util.*;


public abstract class AbstractClass {
   
   public void template() {
      // TODO: implement
   }
   
   
   public abstract void operation();
   
   public abstract void operation3();
   
   public void operation4() {
      // TODO: implement
   }
   
   
   public abstract void operation5();

}

 

/***********************************************************************
 * Module:  ConcreteClass1.java
 * Author:  Administrator
 * Purpose: Defines the Class ConcreteClass1
 ***********************************************************************/

import java.util.*;


public class ConcreteClass1 extends AbstractClass {
   
   public void operation() {
      // TODO: implement
   }
   
   
   public void operation3() {
      // TODO: implement
   }
   
   
   public void operation5() {
      // TODO: implement
   }

}

 

/***********************************************************************
 * Module:  ConcerteClass2.java
 * Author:  Administrator
 * Purpose: Defines the Class ConcerteClass2
 ***********************************************************************/

import java.util.*;


public class ConcerteClass2 extends AbstractClass {
   
   public void operation() {
      // TODO: implement
   }
   
   
   public void operation3() {
      // TODO: implement
   }
   
   
   public void operation5() {
      // TODO: implement
   }

}

 

© 著作权归作者所有

共有 人打赏支持
y
粉丝 0
博文 7
码字总数 4364
作品 0
杭州
私信 提问
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
0
0
《PHP设计模式大全》系列分享专栏

《PHP设计模式大全》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页...

kaixin_code
11/06
0
0
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
06/24
0
0
Java 设计模式(14) —— 复合模式

一、复合模式 模式常一起使用,组合在一个设计解决方案中 复合模式在一个解决方案中结合两个或多个模式,能解决一般性或一系列的问题 二、示例 本次设计模式讲解中无代码示例,由于复合模式是...

磊_lei
05/26
0
0
设计模式Java Design Pattern-工厂方法模式FactoryMethod

我的博客 一、 设计模式的分类 大体可以分为三类: 创建型模式(5个) 单例模式、原型模式、工厂方法模式、抽象工厂模式、建造者模式 结构性模式(7个) 适配器模式、装饰器模式、代理模式、...

勇敢写信
03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Netty handle方法周期 (四)

写了一个练习之后,发现自定义的助手类每次肯定是必须的,对于不同的业务逻辑需求,会写相对应的逻辑 最简单的查看Handle生命周期的方式,就是重写上级方法,看名字差不多应该可以知道方法的作用 ...

_大侠__
6分钟前
0
0
vue主动刷新页面及列表数据删除后的刷新实例

1.场景 在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求。 2.遇到的问题 1. 用vue-router重新路由到当前页面,页面是不进行刷新的 2.采用window.reload(),或者...

前端小攻略
16分钟前
1
0
闲话高并发的那些神话,看京东架构师如何把它拉下神坛

高并发也算是这几年的热门词汇了,尤其在互联网圈,开口不聊个高并发问题,都不好意思出门。高并发有那么邪乎吗?动不动就千万并发、亿级流量,听上去的确挺吓人。但仔细想想,这么大的并发与...

James-
22分钟前
3
0
Emacs 系列:让我们拥抱 Emacs 和 org 模式

导读 我必须承认,在使用了几十年的 vim 后, 我被 Emacs 吸引了。长期以来,我一直对如何组织安排事情感到沮丧。我也有用过 GTD 和 ZTD 之类的方法,但是像邮件或是大型文件这样的事务真的很...

问题终结者
22分钟前
3
0
解析Node.js通过axios实现网络请求

本次给大家分享一篇node.js通过axios实现网络请求的方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 1、使用Npm 下载axios n...

前端攻城老湿
35分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部