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

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

最新文章

  1. 学习winform第三方界面weiFenLuo.winFormsUI.Docking.dll
  2. Codeforces Round #304 C(Div. 2)(模拟)
  3. php浏览历史记录
  4. nokogiri如何使用
  5. MySQL学习笔记01-MYSQL安装
  6. PHP获取文件目录dirname(__FILE__),getcwd()
  7. sql server 查找字段上的约束
  8. WiFi Test Entity
  9. Android清除本地数据缓存代码
  10. Web分析日志分析2
  11. 杜教的AAA树
  12. 通过匹配绑定select option的文本值 模糊匹配
  13. 学习笔记:javascript内置对象:字符串对象
  14. Leetcode#169. Majority Element(求众数)
  15. Python3学习笔记32-xlwt模块
  16. ganglia问题汇总
  17. springBoot 整合mybaits 逆向工程
  18. js实现cookie跨域功能
  19. Introduction to debugging neural networks
  20. Flink的入门

热门文章

  1. [APIO2009]抢掠计划
  2. iOS开发——自定义转场动画
  3. 标注-CRF条件随机场
  4. angular2 实现的小项目
  5. 解决PhpMyadmin1440秒未活动自动退出
  6. C++学习-9
  7. 依赖反转原则DIP 与 asp.net core 项目结构
  8. 洛谷 P2401 不等数列
  9. 3.21li = [1,'a','b',2,3,'a'] # li[1] = 'dfasdfas' # print(li)
  10. ER图