`
flypeace
  • 浏览: 157980 次
  • 性别: 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')

相关推荐

    IDE接口及针脚定义

    IDE接口及针脚定义 IDE(Integrated Drive Electronics)是一种老式的硬盘接口,现在已经逐渐被SATA接口所取代。IDE接口由Compaq和Western Digital公司开发,新版的IDE命名为ATA,即AT bus Attachment。IDE接口在...

    USB口接口定义USB口接口定义

    ### USB接口定义详解 #### 一、引言 随着信息技术的发展,USB(Universal Serial Bus,通用串行总线)已成为连接计算机系统与外部设备的重要标准之一。它以其高速度、良好的兼容性和支持热插拔等特点受到广泛欢迎...

    定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。 2,定义一个接口Mobile

    1,定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。 2,定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。 3,定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出...

    针脚定义与接口定义图解.doc

    针脚定义与接口定义图解.doc

    Cruise各部件参数定义说明(电动车建模)

    在对电动汽车进行建模仿真时,需要定义和理解各种部件的参数。这些部件包括电动机(EM)、车辆整体(V)、电池组(QH)、电控元件(X)、驾驶舱(CO)、单速比传动装置(D)、差速器(N)、轮胎/车轮(W)、刹车系统...

    德赛西威CMMB接口定义

    德赛西威 导航仪 电视CMMB 接口各个针脚的 定义,及其排列顺序,供参考

    手咪接口定义.pdf

    手咪接口定义可以帮助业余电台操作者正确地连接手咪和电台,避免不必要的错误和事故。 本文中,我们将对手咪接口定义的英文、俄文和中文资料进行分析和比较。我们将从手咪接口定义的历史背景、技术原理、连接规范、...

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

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

    LED显示屏08接口定义

    LED显示屏08接口是用于控制和驱动LED显示屏的基础硬件接口,尤其在自制LED显示屏时,了解这些接口的定义和功能至关重要。08协议通常指的是采用8位数据传输的通信协议,这种协议常用于简单的LED显示控制,因为它可以...

    Arduino 所有接口标准定义图

    Arduino所有接口标准定义图是关于Arduino板上各个接口的详细解释,说明了每个接口的功能和用法。这些信息对于任何使用Arduino进行项目开发的人来说都是必要的。我们可以从以下几个方面来深入理解这些知识点: 1. ...

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

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

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

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

    Flask接口参数校验,支持多层嵌套参数校验,精准定位,友好校验提示

    为了确保接口调用的正确性和数据的有效性,参数校验是必不可少的一环。针对这个问题,我们可以创建一个自定义的参数校验器,以支持多层嵌套的参数校验,提供精准定位和友好的错误提示,提高开发效率和代码质量。 在...

    网线接口定义.网线排列

    网线接口定义.jpg

    NUC9底板 桥接板 底板 NC100原理图纸 电源接口定义

    这款底板的设计包含了电源接口、PCI接口以及其他关键接口的定义,方便用户进行DIY或系统集成。 首先,电源接口在底板上扮演着至关重要的角色,因为它为整个系统提供稳定的电力供应。根据描述中的信息,我们可以看到...

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

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

    DMO_LQ084V1DG21 216x152原装彩屏的详细资料及使用方法,包含各项参数介绍和接口定义

    DMO_LQ084V1DG21的接口是连接屏幕与控制系统的桥梁,了解其接口定义对于正确使用该屏幕至关重要。常见的LCD接口包括电源接口、信号接口等: 1. **电源接口**:通常包括VCC(正电压输入)、GND(接地端)等引脚,...

    U.2接口规范(SSF-8639)PIN定义

    U.2 接口规范(SSF-8639)PIN定义.The contact numbering scheme is an extension of the contact numbering schemes......Figure 5-1 shows the contact numbering for a fully populated version of an SFF-8639 ...

    PCI-E插槽接口定义

    PCI-E插槽接口定义,适合设计PCI-E接口设备的参考。

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

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

Global site tag (gtag.js) - Google Analytics