Loading AI tools
電腦科學的概念;兩個事物之間的交互作用點 来自维基百科,自由的百科全书
接口(英语:interface),又译介面,是泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其互动的方式,就如物件导向程式设计提供的多重抽象化。
“interface”的各地常用译名 | |
---|---|
中国大陆 | 界面、接口 |
台湾 | 介面 |
港澳 | 界面、介面 |
介面是两实体交换资料的媒介,交换资料的实体可以是软体、电脑硬体、外部设备、人等等[1]。有些介面(例如触控式萤幕)是双向的,可以传送资讯,同时接收资讯,有些介面(例如滑鼠或喇叭)则是单向的,只能传送或接收资讯[2]。人类与电脑等资讯机器或人类与程式之间的介面称为使用者介面。电脑等资讯机器硬体元件间的介面叫硬体介面。电脑等资讯机器软体元件间的介面叫软体介面。
介面可能也提供某种意义上的在讲不同语言的实体之间的翻译,诸如人类与电脑之间。因为介面是一种间接手段,所以相比起直接沟通,会引致些额外负担。
硬体介面为电脑等的资讯机器的硬体之间通信时的物理连接器形状、传送接收信号的方法(协定)等等的规格。主要可分为并列连结的和位元序列连结的。序列连结者相比起并列连结者,多得多使用同一电线作为信号控制线和电源供应线。个人电脑领域,因并列连结向更高传输速度的发展遇到瓶项,而在向各介面的序列连结方式迁移(参看汇流排)。
软体介面可能会指不同层次上的各种介面:作业系统和硬体之间会有介面、电脑上运行的应用程序或计算机程序需要有介面来处理字串流、过滤器及管道[3]、在面向对象程序设计中,应用程式中的物件会透过方法来和外面互动,这也是一种介面[4]。而软体间通讯时传递消息(message)的规格、行程间通讯或电脑网路也都有介面的特性。
在程式设计时的一个基本原则是:所有的资源预设都是不允许直接存取的,只允许透过有良好定义的介面来存取[5]。软体介面提供可以存取电脑系统中资源(例如记忆体、CPU、储存装置)的方式。若软体没有透过界面存取资源,而是直接存取相关资源,对机能以及稳定性都会造成不良的(而且可能是灾难性的)后果[来源请求]
软体模组中的介面会提供常数、资料类型、子程序的类型、异常处理规格、以及类型特征。有时介面中也会定义公共变量[6]。
软体模组A的介面会刻意的和模组的实现分开定义。模组的实现会包括要有关介面的模组以及介面的实际程式码,也包括模组中的私有程序及方法。另一个软体模组 B,假设是软体模组A的客户端,需通过公开提供的介面才能存取软体模组A。这样安排在实务的好处是:若将软体模组A的实现方式改成其他方式,但介面不变,软体模组B仍然可以存取软体模组A,软体模组A实现介面的作法不会影响B,这就是关注点分离,只关注介面的规格(也可以参照里氏替换原则)[来源请求]。
在一些面向对象程序设计语言中(特别是没有完整多重继承的语言),会用“介面”来定义没有资料,只有方法的抽象资料型别,以此为方法的签名(signatures)。任一个具有程式及资料的类 (计算机科学),只要有“介面”中所有的方法,就是“实现”此一介面[7]。而且,就算在单一继承语言中,也可以实现多个介面,因此可以同时“符合”多种型态[8]。
介面是资料类型的定义:物件可以改变其型态(例如子程序或方法呼叫中),方式是用其所实现的介面或基底类,而不是直接列出具体的类。因此所有实现这个介面的类都可以使用[来源请求]。例如在最终实现之前,可以用虚设代码来让软体开发得以进行。另外,在测试驱动开发中,可以在测试过程中用mock物件来取代实际的物件,这类的桩实现会在后续开发中,再改为真正实作的程式码。
一般而言,介面中的方法没有实际的程式码,因此无法执行。若要执行,需要由非抽象的类别实现其介面,让方法有实际的程式码,才能执行[来源请求]。例如一种称为Stack
的介面需要支援两种方法:push()
and pop()
。可以用不同的方式来实现,例如FastStack
及GenericStack
,第一个可能是快速的,其资料结构是固定长度的,第二个的资料结构其长度可以调整,不过速度较慢。
介面可能会包括许多方法,不过也有可能只有一种方法,甚至完全没有方法。例如Java语言定义了介面Readable
,只有一个read()
方法:会因为不同的用途而有许多不同的实现,例如BufferedReader
、FileReader
、InputStreamReader
、PipedReader
及StringReader
。像是Serializable
等标记介面完全没有方法,是在通用处理时,用反射来提供运行时资讯[9]。
介面的使用也可以形成一种称为“介面上的程式设计”(programming to the interface)的程式设计风格。此作法背后的概念是将程式的逻辑以其物件的介面来呈现,而不是内部实现的细节。介面上的程式设计可以减少和实现相关的相依性,也提高程式的复用性[10]。
控制反转是将上述概念推到极致后的一种设计原则。
使用者介面是指人类与机器、装置、电脑程式或其他复杂工具互动的中介物的聚合。常用于电脑系统和电子装置文脉。有时也会将机械系统、交通工具或工业设备的使用者介面称为人机介面(Human-Machine Interface ,缩写为 HMI)。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.