模板模式与策略模式/template模式与strategy模式/行为型模式
模板模式
模版模式,又被称为模版方法模式,它可以将工作流程进行封装,并且对外提供了个性化的控制,但主流程外界不能修改,也就是说,模版方法模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去实现。
几个要点,针对java:
- 抽象父类(防止实例化),公共方法(public),规定好工作流
- 抽象父类规定好抽象方法(protected),具体由子类实现,父类将抽象方法加入自己的工作流
- 具体子类实现父类的抽象方法
- 任意实例化的子类,都会按照父类工作流工作,只是部分(抽象方法实现)不同
abstract class Handle{public void handle(){a();b();c();}void a(){}void c(){}protected abstract void b();}class Handle1 extends Handle{@overrideprotected override void b(){Console.WriteLine("Handle1");}}class Handle2 extends Handle{@overrideprotected override void b(){Console.WriteLine("Handle2");}}
调用:
Handle handle=new Handle1();
handle.handle();
任意子类都会按照规定的工作流a()->b()->c()执行,部分(b方法)由具体子类去定义。
策略模式
针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
public interface ICalculator { public int calculate(int a,int b);
}
public class Plus implements ICalculator { @Override public int calculate(int a,int b) { return a+b; }
}
public class Minus implements ICalculator { @Override public int calculate(int a,int b) { return a-b; }
}Class Calculator{ICalculator calculator;public Calculator(ICalculator calculator){this.calculator=calculator;}public int calculate(int a,int b){return calculator.calculate(a,b);}
}当需要加法计算时:
Calculator plusCalculator=new Calculator(new Plus());
int result=plusCalculator.calculate(3,5);
策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。
策略模式和模板模式场景对比:
策略模式的应用场景
1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
2、 需要在不同情况下使用不同的策略(算法),一般会定义一个接口规范,使用不同的策略方式去实现它
3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。
而模版方法模式的应用场景
1、多个类区别在于主流程中的某个细节
2、客户可以自已实现模版里的抽象方法
3、对客户隐藏具体的实现流程(方法的组合的顺序)
参考这里
参考这里
转载于:https://www.cnblogs.com/lknny/p/5759152.html
模板模式与策略模式/template模式与strategy模式/行为型模式相关推荐
- 设计模式学习之策略模式(Strategy,行为型模式)(13)
转载地址:http://www.cnblogs.com/zhili/p/StragetyPattern.html 一.引言 本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方 ...
- 【设计模式】三大类:创建型模式、结构型模式、行为型模式
1 创建型模式 本人理解:以C++为例,创建对象时,用关键字new来创建(实例化)对象.用一个函数或类将new的过程封装起来,就是创建型模式. <设计模式>中的描述: 创建型模式抽象了实例 ...
- 设计模式之创建型模式(工厂、原型、建造者)
文章目录 创建型模式 2.1 工厂设计模式 2.1.1 简单工厂模式 2.1.2 工厂方法模式 2.1.3 抽象工厂 2.1.4 工厂模式总结 2.1.5 Spring中的工厂模式 2.1.6 工作中 ...
- 创建型、结构型、行为型模式(1)
来源:http://blog.csdn.net/wulingmin21/article/details/6753363 目的 创建型模式 Creational Pattern 结构型模式 Struct ...
- 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)
本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...
- 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图
本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...
- 设计模式--行为型模式
本文主要讲行为型模式,创建型模式和结构型模式可以看博主的另外两篇文章:设计模式之创建型模式(附实例和详解). 设计模式之结构型模式(附实例和详解). 行为型模式细分为如下11种:策略模式.模板方法模式 ...
- java创建型_Java创建型模式
Java创建型模式 在软件工程中,创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象.基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度.创建型模式通过以某种方式控制 ...
- 软件设计与体系结构——创建型模式
如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔的个人空间 创建型模式: 创建型模式抽象了实例化过程 帮助系统独立于如何创建.组合和表示对象 一个类创建型模式使用继承改变被实例化的类 类创建型 ...
- 《Android之大话设计模式》--设计模式 创建型模式 第五章:原型模式
原型模式应用场景举例: GG和MM经常在QQ上聊天,但是GG打字的速度慢如蜗牛爬行,每次MM在瞬间完成恢复或者问候是,GG都会很紧张的去尽力快速打字,尽管如此,还是让 MM有些不高心,MM说回复信息 ...
最新文章
- 据说是Jack Wu的自定义函数!烂
- FIFO的verilog代码
- 英语口语海报演讲--东软
- mysql8.0 的新特性_MySQL8.0-新特性汇总
- 带你入门SpringCloud 之 通过SpringCloud Bus 自动更新配置
- python全栈开发_day42_数据库6
- shell基础之EOF的用法
- 关于RUP的一点见解,针对于近期的面向对象方法课程
- truffle Migration是什么
- python四种可变类型_python中可变类型与不可变类型 + 类型转换
- 提高生产力,这4款设计软件能自动生成代码
- [关系图谱] 二.Gephi导入共线矩阵构建作者关系图谱
- 图片怎么去水印?大神教你3个免费去水印方法
- Vue3中setup前写async页面不显示
- 关于python数字的一种下划线奇怪写法
- 理解条件概率的链式法则
- 浅谈MYSQL增量备份
- 阶梯下降法,房价问题
- buuoj Pwn writeup 106-110
- Linux she 39 ll,linux_shell 编程学习-初识she'll
热门文章
- Tensorflow的快速安装(张量图例)
- 兰州职称计算机中心,【兰州2013年职称计算机考试报名通知】- 环球网校
- Linux内核态之间进程通信,Linux 系统内核空间与用户空间通信的实现与分析[转载]...
- java高并发多线程架构_《Java高并发编程详解-多线程架构与设计》线程安全与数据同步...
- 结对-五子棋游戏-开发环境搭建过程
- maven入门(7)maven项目(组件)的坐标
- Java Web学习总结(23)——Distributed Configuration Management Platform(分布式配置管理平台)...
- 利用tar 通过网络拷贝数据
- PAT1057. 数零壹
- c++学习笔记(4)