18-TypeScript模板方法模式

在有些情况下,一个功能在基础功能上是不会变的,算法的基本骨架也是确定的,但是在某些场景下算法的具体实现有些差异。应对这种问题,可以采用模板方法模式:

abstract class Salary{
    abstract ComputeBaseSalary():void;
    abstract ComputeDecuteSalary():void;
    abstract ComputeBonusSalary():void;
    //定义了通用实现与算法骨架,具体实现在子类中有差别
    ComputeSalary():void{
        console.log("开始计算工资");
        this.ComputeBaseSalary();
        this.ComputeDecuteSalary();
        this.ComputeBonusSalary();
    }
}

class ITSalary extends Salary{
    ComputeBaseSalary():void{
        console.log("IT基本工资");
    }
    ComputeDecuteSalary():void{
        console.log("IT没有提成");
    }
    ComputeBonusSalary():void{
        console.log("IT奖金");
    }
}

class SalesSalary extends Salary{
    ComputeBaseSalary():void{
        console.log("Sales基本工资");
    }
    ComputeDecuteSalary():void{
        console.log("Sales提成");
    }
    ComputeBonusSalary():void{
        console.log("Sales没有奖金");
    }
}

var itsalary=new ITSalary();
itsalary.ComputeSalary();
var salessalary=new SalesSalary();

salessalary.ComputeSalary();

欢迎加入QQ群讨论:573336726

时间: 2025-01-02 01:10:49

18-TypeScript模板方法模式的相关文章

18 行为型模式-----模板方法模式

模式动机(Template Method Pattern):所谓模板,就是具有通用性的一个框架,在不同的具体环境下可以匹配不同的行为.在程序设计中,代码的复用一直是人们追求的目标,更好地利用已有的设计,不仅可以极大地提高开发效率,而且也能保证软件本身的鲁棒性. 一种代码复用的基本原则就是继承机制,但是我们也知道,普通的继承可能会造成派生类比较臃肿,具有“强制性”实现的特性,特别是基类为抽象接口时更是如此.如何让基类承担更多的一般性职责,这就是模板方法模式所解决的问题了. 在模板方法中,将算法的框

"围观"设计模式(18)--行为型之模板方法模式(TemplateMethod Pattern)

模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式.让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤.----WIKIPEDIA 个人理解 模板方法模式相对而言比较简单,一般的都是由抽象类定义好模板方法,然后,子类通过继承并实现其父类中定义好的模板中需要执行的具体的方法,调用子类对象的模板方法时,会执行该类中的具体实现的方法.这个模式我个人的感觉有点像是面向过程的操作,执行完一道工序,接着下一道工序. 案例解析 模板方法相对来说比较简单,这里只列举一个例子供大

java设计模式 模板方法模式Template Method

设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因.

模板方法模式

定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为; 意图:定义了一个在操作中的一个算法框架,把一些步骤推迟到子类中去实现.模板方法模式让子类不需要改变算法结构而重定义特定的算法步骤; 比如 Work(){ ①   准备 ②   实施 ③   结束 } 可以将第二步实施声明为抽象方法,因为每个人实施的过程不同 1 public class TemplateDemo{ 2 public static void main(String []atgs){ 3 Teac

9 模板方法模式

模板方法模式(Template Mothod):在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. UML类图如下: 要点有两个:原语操作PrimitiveOperation以及钩子Hook()方法. 代码举例 1 public abstract class CaffeineBeverage 2 { 3 public void PrepareRecipe() 4 { 5 BoilWater(); 6 Brew();

大话设计模式_模板方法模式(Java代码)

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 简单描述:多个类的行为是差不多的,只是某些局部不一样,则交由父类中抽象出这些子类中相同的部分,父类中定义出不同的部分的接口(方法),这些不同部分的方法则由子类去实现,通过多态,实现代码的重用 大话设计模式中的截图: 例子代码: AbstractClass类: 1 package com.longsheng.templatemethod; 2 3 public

《Head First 设计模式》之模板方法模式——冲泡咖啡和茶

模板方法模式(Template) --在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 好莱坞原则:别调用(打电话给)我们,我们会调用(打电话给)你. 要点: 模板方法的抽象类可以定义具体方法.抽象方法和钩子.抽象方法由子类实现. 钩子是一种方法,在抽象类中不做事,或只做默认的事,子类可以选择要不要覆盖它. 为了防止子类改变模板方法中的算法,可以将模板方法声明为final. 好莱坞原则告诉我们,将决策权放在高层模

模板方法模式(Template Method)

一.模板方法模式介绍 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的 某些特定步骤. 核心:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定.因此,我们采用工厂方法模式,将这个节点的代码实现转移给 子类完成.即:处理步骤在父类中定义好,具体的实现延迟到子类中定义. 说白了,就是将一些相同操作的代码,封装成一个算法的骨架.核心的部分留在子类中操作,在父类中只把那些骨架做好. 例如: 1.去银行办业务,银行

设计模式之模板方法模式(Template Method)摘录

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以

软件设计模式之模板方法模式(JAVA)

什么是模板方法模式? 定义一个操作中算法的骨架,而将这些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 好抽象的概念啊,文绉绉的东西就是不讨人喜欢,下面我用一个生活中常见的例子来举例说明吧 上图是个饮料机,大家都很熟悉吧,各大商场随处可见的一个东西,这里举个例子,比如我们想喝某种饮料,只要按下对应的饮料类别,饮料就自动出来了. 这里我们可以抽象化的想象下饮料在机器里的制作过程(这里只是简单举例,别钻牛角尖哈) 大致我们可以分成4个步骤 ①烧水 ②冲泡