`
canonical
  • 浏览: 366460 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[导入]template vs. interface : 形与名

 
阅读更多

     接口(interface)总对应于某种明确的概念,它并不简简单单的等价于其成员函数的集合。有的接口如java.io.Serializable甚至没有任何成员函数。接口最重要的就是名, 是对概念的甄别。接口发布出去之后才能够被实现。当我们使用某个接口的时候,即使我们只用到其中部分函数,我们也必须负担整个概念。虽说"有名,万物之母", 并不是任何时候我们都需要名的。我们会说,就要那个,蓝色的,这么高,... blabla, 对,就是这个(this)。模板(template)弱化了类型系统,它对系统的约束直接作用在细节行为上,降低了明确建模的需求,不需要概念的分解,合并,比接口更加灵活。但模板并不是任何时候都比接口更好。想象一下,我们拿着一张采购单,上面写着需要某个物品,前面有个尖,后面有个帽,细长形,大概这么长,这么粗,上面有螺纹,螺距这么大,。。。这是...三号螺钉?嗯,最近有一种新产品,塑料材质的,你要不要试试。
   模板与接口在某种程度上是互补的。

分享到:
评论

相关推荐

    bugzilla 安装perl模块的所有需要的包

    1. DBI (Database Interface):这是Perl中用于数据库操作的基础模块,它提供了一个统一的接口来访问各种不同的数据库系统,如MySQL、PostgreSQL等,是Bugzilla与数据库交互的核心。 2. DBD::mysql 或 DBD::Pg:这两...

    安装Bugzilla所需Perl模块

    1. DBI(Database Interface):这是Perl与数据库交互的标准接口,Bugzilla需要它来连接到其数据库,如MySQL或PostgreSQL。 2. DBD::mysql 或 DBD::Pg:这些是DBI的特定数据库驱动,分别对应MySQL和PostgreSQL。...

    STC8A8K64S4A12-LQFP44单片nRF24L01无线接收(模拟SPI)接口接口软件例程源码.rar

    nRF24L01与单片机通信时,通常通过SPI(Serial Peripheral Interface)接口,这是一种同步串行通信协议,用于单主多从设备间的高速数据传输。 "模拟SPI"是指在某些不具备硬件SPI接口的单片机上,通过软件编程来模拟...

    COM有关操作

    五、数据导入与导出 1. 数据导入:可以使用`#import`指令导入外部类型库,获取数据结构。例如,导入Excel的数据结构: ```cpp #import "libid:00020813-0000-0000-C000-000000000046" no_namespace named_guids ``` ...

    Template.rar

    固件库通常分为三个主要部分:HAL(Hardware Abstraction Layer,硬件抽象层)、LL(Low-Layer,低层)和CMSIS(Cortex Microcontroller Software Interface Standard,Cortex微控制器软件接口标准)。HAL提供了一种...

    code format template

    - 接口(Interface)命名规则与类相同,实现接口的方法应完全实现,避免抽象。 11. **代码复杂性**: - 尽量降低代码圈复杂度(Cyclomatic Complexity),避免过于复杂的控制流程。 - 方法应保持短小精悍,一个...

    springboot-mongo.zip

    SpringBoot与MongoDB的整合是现代Java开发中的常见实践,特别是在构建微服务架构时。SpringBoot以其简洁的配置和自动装配特性,极大地简化了应用程序的搭建过程,而MongoDB作为NoSQL数据库,提供了非关系型数据存储...

    structs导入包

    6. **接口与struct**: Go语言的接口(interface)提供了一种抽象数据类型,结构体可以通过实现接口的所有方法来满足该接口。这是一种实现多态的方式。 现在,让我们将`structs`与SSH框架联系起来: 在Java的SSH...

    com组件技术文档

    例如,这里我们创建了一个名为`compare`的方法,用于比较两个整数并返回较大的值。 ```cpp STDMETHODIMP Chomework::compare(int a, int b, int *c) { if (a > b) { *c = a; } else { *c = b; } // TODO:...

    Java调用阿里云短信服务所需要的jar包

    其中"DY"代表“Dynamic SMS”,即动态短信,"API"则表示Application Programming Interface,即应用程序编程接口。 在项目中使用这些jar包,你需要进行以下步骤: 1. **导入jar包**:将这两个jar包添加到你的项目...

    template-typescript:我的新TypeScript项目模板

    5. **模块 (Modules)**:TypeScript 支持 CommonJS 和 ES6 模块系统,使得代码组织更加清晰,便于导入和导出。例如,`export default class MyClass {}` 和 `import MyClass from './MyClass'` 6. **枚举 (Enums)**...

    cacti-0.8.8a.tar.gz

    4. **Web Interface(Web界面)**:用户可以通过Web浏览器访问Cacti,查看和管理监控数据,配置新的监控项,以及设置报警阈值。 5. **Template System(模板系统)**:Cacti的模板功能允许用户快速部署对新设备的...

    Template(STM32F103).zip

    4. **CMSIS**: Cortex Microcontroller Software Interface Standard (CMSIS) 是ARM公司为Cortex-M系列处理器提供的软件接口标准,包含设备特定的头文件、中间件组件和软件工具。在STM32开发中,CMSIS提供了访问...

    java学习之英文词汇

    26. **Template**: 模板,预设的设计或格式方案。 27. **Slide**: 幻灯,演示文稿中的单个页面。 #### 二、编程基础词汇 (Programming-based Vocabulary) 1. **Computer**: 计算机,一种能够接收、处理并存储数据...

    接入层交换机配置模板-锐捷S2900

    1. **配置管理网段VLAN**:创建一个名为`交换机管理网段`的VLAN(VLAN ID为100),并设置该VLAN中的管理IP地址为`192.168.100.1/24`。 2. **SSH访问支持**:启用SSH服务,以便远程管理交换机,并设置账号`admin`,...

    ng-book2-angular6-r68

    1. Angular CLI:Angular命令行接口(Angular Command Line Interface)是Angular项目管理的一个重要工具,它允许开发者通过命令行快速执行一系列任务,如创建项目、添加文件、运行开发服务器等。Angular CLI提供了...

    计算机日语(20211010022324).pdf

    根据给定的文件信息,文件名“计算机日语(***).pdf”表明这是一份与计算机专业相关的文档,其中内容涉及了计算机科学的日语词汇。在【部分内容】中出现了一系列散乱的计算机专业术语,包括计算机操作、编程、系统、...

    前端大厂最新面试题-ts-internal.docx

    首先,TypeScript 提供了一套丰富的类型系统,包括基本类型(如 number、string、boolean)、函数类型、接口(interface)、枚举(enum)、联合类型(union types)、元组(tuples)以及never类型等。这种类型系统...

Global site tag (gtag.js) - Google Analytics