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

避免参数定义引起接口变动

    博客分类:
  • java
阅读更多

     接口在java中是个很好的东西,使用接口能够使设计变得灵活,运用得好能够很大程度减少代码之间的耦合度,提高系统的扩展性。一个好的接口,不因该是经常变动的,接口的定义体现着设计者对业务的理解,对设计者设计功底的体现。实际中,接口的设计往往不可能面面俱到,但是应该尽量避免变动。这里发现一条经验,就是接口传递参数时,尽量用用一个参数封装多个参数,比如说有个接口中有个方法

 

 

public void m1(String p1,String p2); 

 

如果中途,发现传递的参数不足,变为

public void m1(String p1,String p2,int n); 
 

后面某个时候,又觉得增加传入参数,这下又得加了,接口跟着变,使用的人可能跟着头疼,如果一开始的时候就这么定义

public void m1(Param p1); 

 Param 是参数类:

public class Param
{
   public String p1;
   public String p2;

}

 后面加参数,就不需要变动接口方法了,只需要在Param 中增加参数:

public class Param
{
   public String p1;
   public String p2;
   public int n;
}

 这样就避免了接口的频繁变动,尤其是在第三方接口中尤为重要,不光是传入参数,传出也是类似道理。

 

其实比较扩展做法是接口参数传递接口,更加灵活:

public void m1(IParam p); 

 IParam是参数接口,这样就更加加大了扩展空间和想象空间。

 

 

 

 

分享到:
评论
4 楼 greatghoul 2012-02-24  
flypeace 写道
如果是从语言角度比较,各个语言的优略和特点就多了,在java基础上的groovy也是很不错的。


groovy确实不错。
3 楼 flypeace 2012-02-23  
greatghoul 写道
但这样也使代码变得复杂,也丧失了java原本比较好的一些特性。相比之下,python的名参天然的支持扩展。
def foo(paramA=None, paramB=None, paramC='haha'): pass
foo(paramA='a', paramB='b')

这点肯定不能和Python语言向比较,毕竟Python是非常灵活的动态脚本语言,java是静态语言。但是如果劈开语言的角度,单从系统设计的角度来分析,至少怎么去设计接口是要去好好考虑的。如果是从语言角度比较,各个语言的优略和特点就多了,在java基础上的groovy也是很不错的。
2 楼 greatghoul 2012-02-23  
public void m1(String p1,String p2);

你的方法名太亮了
1 楼 greatghoul 2012-02-23  
但这样也使代码变得复杂,也丧失了java原本比较好的一些特性。相比之下,python的名参天然的支持扩展。
def foo(paramA=None, paramB=None, paramC='haha'): pass
foo(paramA='a', paramB='b')

相关推荐

    motorola 对讲机 接口定义

    这些协议定义了数据位、停止位、校验位和波特率等参数,确保数据的正确发送和接收。 3. 控制信号:这些信号用于启动、停止或调节对讲机的操作。例如,PTT(Push-to-Talk)信号用于指示用户正在讲话,而SQL( ...

    p328GP338 接口定义

    Gp328 GP338 接口定义 可以了解各个接口的用途

    MPI接口针脚定义

    MPI接口 针脚 定义,图形表示,不会理解错的,本人整理的

    SFP光模块电气接口定义.pdf

    电气接口定义还包括特定的电气特性参数,如下: - Vcc:3.3V±5%电源,典型工作电流为300mA。 - Vee:模块的地。 - Tx+ / Tx-:差分信号发射对,传输数据时电压幅度范围在500mV到2400mV之间。 - Rx+ / Rx-:差分...

    PC104接口定义

    ### PC104接口定义详解 #### 引脚定义与功能概述 PC104接口是一种紧凑型的工业计算机标准接口,旨在为嵌入式应用提供高性能和高可靠性。其设计目的是为了替代传统的PC/AT架构,同时保持与ISA总线的兼容性。下面将...

    FMC接口连接标准

    FMC接口连接标准是FPGA标准接口卡规范的翻译版本,旨在定义FMC接口的连接规则和信号定义规则。该标准规定了FMC接口的管脚定义规则、信号名称定义规则、时钟信号定义规则、差分信号定义规则、单端信号定义规则等。 ...

    PCIe-M.2-接口规范-V1.0-接口定义

    PCIe M.2接口规范是一种电子机械接口标准,用于定义一种紧凑型连接器,能够连接个人电脑、笔记本电脑或其他形式的计算设备与固态存储装置、无线网卡等模块。M.2接口的形状小巧,支持多种连接协议,包括PCI Express ...

    PCIeM.2接口规范V1.0接口定义.pdf

    PCIe M.2接口规范V1.0是关于PCI Express Mini Card (M.2)标准的一个文档,它详细定义了M.2设备与系统之间接口的电气和机械特性,以及M.2卡与插槽的兼容性。该规范涉及的主要知识点包括: 1. PCIe M.2接口的总线和...

    三星全系列数据线接口定义图

    关于三星全系列手机数据线接口的各个引脚的定义图

    hytera定义

    2. **数据接口**:数据接口如USB端口,用于与电脑或其他设备进行数据传输,例如更新固件、配置设备参数或者进行录音回放。有些高端型号可能还支持串行接口(如RS-232),用于更复杂的编程和系统集成。 3. **模拟和...

    USB接口针脚定义及详细说明(附图文说明)

    USB接口针脚定义是指USB连接器内部的金属触点的功能分配。一个标准的USB接口由四个针脚组成,具体如下: 1. VCC针脚:提供+5V电压的电源线,一般为红色。USB接口的输出电压和电流为+5V 500mA,并且在实际运用中有...

    NGFF与NVME复用对比表(M.2接口NVME(PCIE)与SATA针脚接口定义)

    很多主板上的M.2接口都是SATA与NVME复用, 即插入NVME硬盘或无线网卡,走pcie信号,插入NGFF的硬盘走SATA信号。 这张对比表则是2个不同信号总线的针脚定义,供开发或主板维修使用。

    硬件接口定义

    硬件接口定义硬件接口定义硬件接口定义硬件接口定义硬件接口定义硬件接口定义

    DLL接口函数查看工具

    DLL接口函数实际上是DLL文件中定义的一系列公开函数,这些函数具有明确的调用约定和参数类型,使得其他程序能够安全地调用它们。DLL文件不包含执行入口点,它仅提供服务,由需要这些服务的可执行文件(EXE或另一个...

    USB 2.0 A 型、B 型、Mini和 Micro 接口定义及封装

    ### USB 2.0 A 型、B 型、Mini 和 Micro 接口定义及封装 USB(Universal Serial Bus)即通用串行总线,在计算机领域内被广泛应用于各种外设连接,它提供了标准化的数据传输接口,使得不同设备之间能够进行高效的...

    后端接口文档例子 word

    在上面的接口文档中,我们可以看到请求参数的定义。这些参数包括storeId、merCode等,这些参数都是必填项,用于标识门店信息。 * storeId:门店的唯一标识符,类型为Int。 * merCode:品牌的唯一标识符,类型为...

    Java重定义接口实现代码的自动注入.pdf

    总的来说,Java重定义接口实现代码的自动注入是一种解决接口变动与系统升级矛盾的有效技术,它借助于Java的动态性,让接口的扩展变得更为便捷,同时减少了代码维护的工作量。在软件开发过程中,合理运用这项技术,...

    API接口模板

    API(Application Programming Interface)接口是开发者用来构建应用程序或服务的工具集,而接口模板则是规范和标准化这些接口设计的一种方式,使得接口的定义、使用和维护更加高效、规范。 在API接口模板中,通常...

    USB3.0连接器引脚、接口定义及封装尺寸

    USB3.0 连接器引脚、接口定义及封装尺寸 本文插图及封装尺寸来源, USB 3.0-final.pdf(Date:November/12/2008), USB 3.0 协议可在 USB 官方下载到。 USB 3.0 中定义的连接器包括(本文不包含连接线缆): USB 3.0...

Global site tag (gtag.js) - Google Analytics