JavaScript之接口和面向接口编程

这篇具有很好参考价值的文章主要介绍了JavaScript之接口和面向接口编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考资料

  • 曾探《JavaScript设计模式与开发实践》;
  • 《javaScript设计模式与开发实践》笔记

什么是接口?

  1. 字面意义上的api接口,供外部使用,不需关注内部实现;
  2. 静态语言提供的关键字 interface,为编写类提供一种契约,方便编译器检查;
  3. 面向接口编程的接口。

静态语言-面向接口编程

  • 抽象类abstract

示例:鸭子类型中,鸭子和鸡类继承往上一层的抽象类 animal,实现了契约和多态,在编写过程中能被类型检查到

面向接口编程在过程上看更像“面向超类型编程”,对象的具体类型隐藏在超类型背后,对象就可以相互替换使用。

  • 接口interface

interface实际上也是继承的一种方式,叫接口继承

抽象类和interface的作用

  • 通过向上转型来隐藏对象的真正类型,以表现对象的多态性;
  • 约定类与类之间的一些契约行为。

动态语言-面向接口编程

javaScript语言中与生俱来就具有多态性,无需手动向上转型,更多的是需要类型检查,比如:

  • 利用鸭子类型进行接口检查:
	var setCommand = function( command ){
		document.getElementById( 'exeCommand' ).onclick = function(){
			if ( typeof command.execute !== 'function' ){
				throw new Error( "command 对象必须实现execute 方法" );
			}
			command.execute();
		}
	};
  • 使用TypeScript进行接口检查。文章来源地址https://www.toymoban.com/news/detail-537579.html

    	interface Command{
    		execute: Function;
    	}
    
    	class RefreshMenuBarCommand implements Command{
    		constructor (){
    		}
    		execute(){
    			console.log( '刷新菜单界面' );
    
    		}
    	}
    	class AddSubMenuCommand implements Command{
    		constructor (){
    		}
    		execute(){
    			console.log( '增加子菜单' );
    		}
    	}
    	class DelSubMenuCommand implements Command{
    		constructor (){
    		}
    			// 忘记重写execute 方法
    	}
    
    	var refreshMenuBarCommand = new RefreshMenuBarCommand(),
    	addSubMenuCommand = new AddSubMenuCommand(),
    	delSubMenuCommand = new DelSubMenuCommand();
    	refreshMenuBarCommand.execute(); // 输出:刷新菜单界面
    	addSubMenuCommand.execute(); // 输出:增加子菜单
    	delSubMenuCommand.execute(); // 输出:Uncaught TypeError: undefined is not a function
    

到了这里,关于JavaScript之接口和面向接口编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS 鸿蒙应用开发(十一、面向鸿蒙开发的JavaScript基础)

    ArkTS 是HarmonyOS(鸿蒙操作系统)原生应用开发的首选语言。它是用于构建用户界面的一种TypeScript方言,扩展了TypeScript以适应HarmonyOS生态系统的UI开发需求。ArkTS 融合了TypeScript的静态类型系统和现代UI框架的设计理念,为开发者提供了一种更安全高效的方式来编写HarmonyOS应用。

    2024年02月20日
    浏览(53)
  • 设计模式 -- 策略模式(传统面向对象与JavaScript 的对比实现)

    规则:根据员工的工资基数和年底绩效情况计算年终奖 初级实现 缺点 多重 if else 违反开发-封闭原则,可维护性差 复用性差 使用组合函数重构代码 使用组合函数来重构代码,把各种算法封装到一个个的小函数里面,这些小函数有着良好的命名,可以一目了然地知道它对应着

    2024年02月11日
    浏览(65)
  • LeetCode面向运气之Javascript—第13题-罗马数字转整数-99.21%

    给定一个罗马数字,将其转换成整数。 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M 分别代表1,5,10,50,100,500,1000 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右

    2024年02月07日
    浏览(46)
  • 发掘JavaScript潜力:掌握高级技巧,成为JavaScript编程大师!

    🎬 岸边的 风:个人主页  🔥 个人专栏  :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 众所周知, JavaScript  是一种非常流行 🔥 的编程语言,它已经成为了网页开发的必备技能。但是,在我们从事 JavaScript编程 的时候,我们却没有完全发掘和利用它的

    2024年02月14日
    浏览(47)
  • web前端框架Javascript之JavaScript 异步编程史

    早期的 Web 应用中,与后台进行交互时,需要进行 form 表单的提交,然后在页面刷新后给用户反馈结果。在页面刷新过程中,后台会重新返回一段 HTML 代码,这段 HTML 中的大部分内容与之前页面基本相同,这势必造成了流量的浪费,而且一来一回也延长了页面的响应时间,总

    2024年02月14日
    浏览(54)
  • 面向接口编程实践之aspnetcoreapi的抽象

    最为一名越过菜鸟之后的开发,需要做接口开发。下面做一个纯粹的接口编程的实例demo,仅仅是一个webapi接口的抽象。 下面是代码接口,AbsEFWork是webapi,BaseEntityFramework是一个接口库。 先介绍一下webapi的实现,代码是从底层往上层写的,阅读代码的习惯应该是自上向下。 控制

    2023年04月18日
    浏览(24)
  • 【javaScript】DOM编程入门

    概念:DOM(Document Object Model)编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化的编程 为什么要由DOM编程来动态修改呢?我们就得先理解网页的运行原理: 如上图,程序员编写的html文件存储在服务器端,而用户使用的浏览器则由u

    2024年04月09日
    浏览(34)
  • 【编程向导】JavaScript-创建对象一期讲解

    工厂模式 是用来创建对象的一种最常用的设计模式。工厂模式不暴露创建对象的具体逻辑,而是将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式常见于大型项目,例如 jQuery 的 $ 对象,我们创建选择器对象之所以没有 new selector 就是因为 $() 已经是一

    2024年03月16日
    浏览(35)
  • JavaScript中的模块化编程

    JavaScript是一种强大的编程语言,它可以在浏览器中进行客户端脚本编写,并且在服务器端也有广泛的应用。随着JavaScript应用的增多,JavaScript代码的复杂度也不断增加。为了提高代码的可维护性和重用性,模块化编程变得越来越重要。本文将讨论JavaScript中的模块化编程,包括

    2024年02月02日
    浏览(60)
  • JavaScript 深度剖析-函数式编程(一)

    为什么要学习函数编程以及什么是函数式编程 函数式编程的特性(纯函数、柯里化、函数组合等) 函数式编程的应用场景 函数式编程库 Lodash 函数式编程是非常古老的一个概念,早于第一台计算机的诞生,函数式编程的历史。 那我们为什么现在还要学函数式编程? 函数式编程

    2024年02月15日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包