`
badqiu
  • 浏览: 673922 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

接口滥用问题

阅读更多

 

我们知道,大家提倡面向接口编程,但凡事都有个度,当滥用,那么面向接口完全流于形式。

 

一.首先,我们先讲一下面向约定编程。

企业编程中,都有一定的项目分层编程规范,如前台与后台逻辑之间的联系通过定义接口来完成。

正如我们平时使用的 MVC三层模形,service层,dao层很多都使用接口,那么新来者肯定也要遵守规范,在这三层使用接口。

就是大家约定成俗都使用接口而已。但请确记,你这不是面向接口编程,而是面向约定编程.

为什么这样说呢,请后面听我道来。

 

如果有如下几个特点,那么面向接口编程是流于形式的。

1. 定义的接口没有经过大脑设计

   没有考虑是否有多实现,完全遵从于大家都是这样使用,那么可以确认,你现在是面向约定编程。

 

2. 接口方法过多

   精心设计的接口,接口方法一般比较精简,才可能有多个实现类。而我们平时的业务接口,如果没有将不变及需要变化的接口分离,通通塞在一个大的接口类中,即使有多实现,这种结构也是不合理的,再次确认这种接口完全是遵照某种约定。

 

3. 是否符合面向接口的目的

   使用接口的目的是"定义一个接口,可以有多个实现",因为你有可能连这个目的都不符合。

   举一个例子

   1。如我们有一个 UserDao接口,及一个IbatisUserDaoImpl实现,如果我们有跨数据库的使用需求(同时支持mysql,oracle),根据ibatis实际的使用需求,我们其实是不会有多个IbatisUserDaoImpl实现的,

   因为实际的效果是,我们通过同一个实现类,只需要在执行查询时路由至不同的sqlmap及dataSource就行了,而一般不会做 IbatisOracleUserDaoImpl及IbatisMysqlUserDaoImpl这种实现方式。所以说你是使用ibatis的话,一般也是没有必要使用接口的。

   2。如果你定义的接口UserDao,那么实现类的名称为 IbatisUserDaoImpl,HibernateUserDaoImpl,那么也是有问题的,既然已经选择的一个技术框架(Ibatis或者Hibernate),一般不会出来切换技术实现的需求,跨数据库倒比较实际,如MysqlUserDao,OracleUserDao.

 

 

二.撇开扩展性,那使用接口又有啥好处呢?

1. 通过接口比较容易浏览所有的接口方法,即没有繁杂的实现代码,更易于看懂

2. 接口不能实例化,避免使用者直接实例化后使用(类就有这种问题,直接实例化使用往往是错误的)

 

以上两个好处,也有足够理由支持我们使用接口。

 

三.那么我们应该怎么做?

1。除了面向约定使用的接口,其它的业务逻辑代码,如果没有必要使用接口的就不要使用接口,减少类的数量(太多类看着也很累人的)

2。如果定义的接口方法过多,重新审视一下,是否应该改进设计

 

 

7
3
分享到:
评论
4 楼 Jacarri_Chan 2012-06-08  
happenZheng 写道
“如果没有必要使用接口的就不要使用接口,减少类的数量(太多类看着也很累人的)
”怎么理解??
减少类的数量跟不滥使用接口有什么关系吗?
还有,有一设计原则:类单一职责原则,跟减少类的数量,又怎么理解呢?




我觉得作者的意思是很多时候接口是在充数量。
3 楼 曾经de迷茫 2011-01-04  
设计一个好的接口才是需要下功夫的,而项目中常见的情况是随便随意的一个接口,没有多少意义。
2 楼 happenZheng 2010-12-04  
说真的,很多时候,我们用接口,主要还是面向约定编程!
1 楼 happenZheng 2010-12-04  
“如果没有必要使用接口的就不要使用接口,减少类的数量(太多类看着也很累人的)
”怎么理解??
减少类的数量跟不滥使用接口有什么关系吗?
还有,有一设计原则:类单一职责原则,跟减少类的数量,又怎么理解呢?

相关推荐

    机票接口,机票查询接口,免费机票接口

    6. **API调用管理**:接口提供商会设定调用限制,防止滥用并确保服务稳定。开发者需要合理规划调用频率和次数。 7. **错误处理和异常恢复**:接口设计要考虑网络延迟、数据不一致等问题,提供有效的错误处理机制,...

    新浪、网易、腾讯实时tick接口_python股票_股票接口_新浪股票_tick股票_股票接口.zip

    1. 错误处理:对接口的调用可能会遇到网络问题、超时或服务器错误等,因此需要编写合适的错误处理代码,确保程序的健壮性。 2. 数据缓存:由于频繁请求可能会对服务器造成压力,因此可以考虑将近期获取的数据缓存...

    API接口模板

    9. **速率限制**:为了防止接口被滥用,通常会设置速率限制,限制单位时间内调用接口的次数。 10. **文档说明**:清晰的文档是API接口模板的重要组成部分,应详细说明每个接口的功能、参数、请求示例、响应示例以及...

    航班管家OPEN-API接口说明

    使用OPEN-API时,开发者必须遵守相关法律法规,尊重用户隐私,不滥用用户数据,确保数据的安全传输与存储。 总结,航班管家的OPEN-API为开发者提供了丰富的航班信息资源,使得第三方应用能够无缝集成航班查询、...

    mpz_名片赞接口_

    2. **身份验证与授权**:为了防止恶意用户滥用接口,可能会实施身份验证机制,如API密钥,确保只有合法用户可以请求服务。 3. **限流控制**:描述中提到每天可以领取1000个赞,这暗示了接口存在限流策略,防止用户...

    QQ易语言留言接口

    同时,为了保护用户隐私,应遵循数据安全原则,不得滥用或泄露用户的QQ信息。 总之,QQ易语言留言接口为易语言开发者提供了一个方便的工具,使他们能够轻松地在QQ空间上进行互动。通过学习和实践,开发者可以掌握...

    微商城后端接口项目包含API接口说明文档等

    - API接口的安全性至关重要,需要防止未授权访问、跨站请求伪造(CSRF)、API滥用等问题,可采用OAuth认证、JWT令牌等机制。 - 性能优化方面,可以考虑缓存策略(如Redis)、API限流、数据库读写分离、负载均衡等...

    短信发送接口V4.0

    7. **频率限制**:为了防止恶意攻击或滥用,接口通常会设置发送频率限制,如每个号码每天最多接收几条短信。 8. **错误处理**:合理的错误处理机制是必不可少的,如返回错误代码和错误信息,帮助调用方理解并解决...

    酒店api接口程序源码

    API接口需具备良好的错误处理机制,当请求参数不正确或服务器端出现问题时,应返回清晰的错误代码和描述,方便开发者调试和修复。 8. **性能优化** 对于高流量的酒店预订服务,性能优化至关重要。这可能涉及到...

    【接口】这是一个关于图片的搜索接口(新)

    1. API密钥:为了防止滥用,接口通常需要开发者注册并获取API密钥,每次请求时都要携带此密钥。 2. 请求限制:接口可能会设定每日或每小时的调用次数限制,超出限制后会返回错误代码。 3. 权限级别:不同的API密钥...

    脑机接口——概念、应用以及挑战

    随着脑机接口的普及,如何保护个人的脑部数据不被滥用成为必须考虑的问题。再者,成本问题也是推广的一大障碍。目前,高质量的脑机接口设备往往价格昂贵,限制了其广泛应用。最后,伦理问题也日益凸显,如何平衡技术...

    C语言接口与实现C语言接口与实现C语言接口与实现

    通过头文件(header file)来声明接口,可以确保不同源文件之间的编译独立性,同时避免了全局变量的滥用。数据结构定义则构成了程序内部的数据模型,通过指针和结构体,C语言能够实现复杂的数据组织形式。 接口的...

    各大音乐网站接口

    2. 错误处理:接口调用可能出现各种错误,如网络问题、参数错误、权限问题等,需要做好错误处理。 3. API限制:大部分音乐网站会限制调用频率,超出限制可能会被封禁,所以要合理控制请求次数。 4. 数据格式:接口...

    工行接口1.0.0.3版本(详细说明)

    接口可能有并发调用限制、速率限制,以防止滥用。同时,数据加密、HTTPS等安全措施也是接口设计中不可或缺的部分。 8. **版本管理**:1.0.0.3版本表明这是一个更新迭代,可能包含了修复已知问题、增强性能、添加新...

    芝麻信用接口demo及文档

    需要注意的是,使用芝麻信用接口时,应遵守相关的法律法规和平台政策,保护用户隐私,不得滥用信用信息。 总之,芝麻信用接口Demo和文档是开发人员接入芝麻信用服务的重要工具。通过深入学习和实践,开发者可以熟练...

    音乐API接口用于音乐API调用

    使用音乐API时,必须遵守服务条款,防止滥用和侵犯版权。通常需要使用OAuth 2.0等授权协议来保护用户数据安全,确保只在用户授权的情况下访问他们的信息。 6. **开发示例** 开发者可以使用Python的requests库、...

    金蝶云 WebAPI接口说明书_V4.0.docx,金蝶webapi万能接口,PHP源码.zip

    - 接口调用频率限制:金蝶云可能对API调用有频率限制,防止滥用。 - 错误处理:需要处理各种可能出现的错误状态,如网络错误、认证失败、资源不存在等。 - 安全性:确保在传输敏感信息时使用HTTPS,避免数据泄露...

    短信接口短信接口

    9. **安全性**:短信接口的调用需要安全认证,例如API密钥、OAuth等机制,以防止未经授权的访问和滥用。 10. **费用模型**:短信服务通常按条收费,不同的服务商可能有不同的计费方式和价格。开发者需要关注费用...

    语音验证码API接口

    6. **日志记录**:接口调用的日志记录有助于开发者追踪和分析验证码的发送和验证情况,以便优化服务或排查问题。 7. **接口文档**:提供的“互亿无线-语音验证码接口文档”会详细说明如何配置和使用这些接口,包括...

    接口学习ESG

    同时,接口不应收集不必要的个人信息,确保数据安全,防止滥用,遵循GDPR等法规。 **治理(Governance)** 治理涉及软件开发过程中的决策、透明度和合规性。在接口设计时,应遵循良好的编码规范,确保代码可读、可...

Global site tag (gtag.js) - Google Analytics