首页 > 其他分享 >设计模式5——模板方法模式

设计模式5——模板方法模式

时间:2023-03-17 10:11:37浏览次数:52  
标签:设计模式 end 子类 ctx 模式 start 父类 模板

1、定义
模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。

2、核心
在抽象父类中封装子类的算法框架,它的 init方法可作为一个算法的模板,指导子类以何种顺序去执行哪些方法。
由父类分离出公共部分,要求子类重写某些父类的(易变化的)抽象方法

3、实现
模板方法模式一般的实现方式为继承

以运动作为例子,运动有比较通用的一些处理,这部分可以抽离开来,在父类中实现。具体某项运动的特殊性则有自类来重写实现。
最终子类直接调用父类的模板函数来执行

例子:采用canvas,就是为了展示这个设计模式
`// 所谓模板,就是类的模板,先建立模板,再申明子类并继承父类模板,
// 重新部分方法达到实现自定义的效果
// 简单理解:父类模板 + 子类继承重写

class templateDraw{
constructor(canvas){
this.ctx = canvas.getContext('2d')
}
start(){
throw new Error('此方法为父类方法,不可直接使用,需要子类重写后进行调用。')
}
begin(){
this.ctx.beginPath()
}
drawLine(start, end){
this.ctx.moveTo(start.x, start.y)
this.ctx.lineTo(end.x, end.y)
}
fillRect(start, end ){
this.ctx.fillRect(start.x, start.y, end.x, end.y )
}
stroke(){
this.ctx.stroke()
}

}

class myCan extends templateDraw{
start(){
this.begin()
this.drawLine({x:0,y:0}, {x:100, y:100})
this.stroke()
}
}

let can = new myCan(document.querySelector('canvas'))
can.start()`

标签:设计模式,end,子类,ctx,模式,start,父类,模板
From: https://www.cnblogs.com/MrZhous/p/17223501.html

相关文章

  • 请你谈谈单例模式的优缺点,注意事项,使用场景
    单例模式(Singleton),是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整......
  • 设计模式(二十三)----行为型模式之中介者模式
    1概述一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下......
  • 16.(行为型模式)java设计模式之责任链模式
    一、什么是责任链模式模式(ChainofResponsibility)客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。让多个对象都有机会处......
  • 基础算法模板之二分
    二分1.算法分析对于一个有序的序列,在查找某个值时可以优先考虑中间值与待查找值的关系来缩减查找范围,每次可以缩减一半,因此称为二分。由于每次处理的数据量变为原来的......
  • 基础算法模板之归并排序
    归并排序1.算法分析归并排序是分治的思想,将一个序列分为多个子序列,先让每个子序列有序,再合并已有序的子序列。把长度为n的输入序列分成两个长度为n/2的子序列;对这两个......
  • 基本算法模板之快速排序
    快速排序1.算法描述从数列中挑出一个元素,称为"基准";重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这......
  • vue-router的两种模式
    hash和history区别:外观上:hash的路由在url中带有#号功能上:hash虽然在url中,但是请求不会包裹它,对后端不会产生任何影响,改变hash不会重新加载页面。history是利用了htm......
  • 泛型对象的应用:常规业务逻辑模板化,使用通用的父类来定义字段,具体字段由实现类来赋予数
    泛型对象的应用:常规业务逻辑模板化,使用通用的父类来定义字段,具体字段由实现类来赋予数据//DEMO-1publicinterfaceCommonTemplateService<T,F>{publicTbuildCa......
  • 【设计模式】模板方法
    1.模板方法(TemplateMethod)的定义模板方法模式是一种行为设计模式,它在超类中定义一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。模板是对多种事物的结......
  • MasaFramework入门第二篇,安装MasaFramework了解各个模板
    安装MasaFramework模板执行以下命令安装最新Masa的模板dotnetnew--installMasa.Template安装完成将出现四个模板MasaBlazorApp:MasaBlazorApp的模板创建的是......