`
yunzhongxia
  • 浏览: 648501 次
  • 性别: 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,HibernateUserDao.

 

 

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

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

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

 

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

 

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

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

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

 

 

如果接口的不同实现处理了有相同规则但完全不同的业务,考虑用接口。

如果不同实现处理了相同的事情,但只是拿新的实现替换了旧的实现,建议不要使用接口,直接将原来的实现覆盖即可。

 

接口的最简单初衷是要将“做什么”和“怎么做”进行分离

 

分享到:
评论

相关推荐

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

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

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

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

    API接口模板

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

    航班管家OPEN-API接口说明

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

    mpz_名片赞接口_

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

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

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

    互联网医院外联平台接口文档.docx

    1. 提供外联平台接口文档的技术咨询和指导,解决使用过程中的技术问题。 2. 对接医院和外部系统的技术团队,协助进行系统集成和数据交互的调试和优化。 3. 定期更新和发布外联平台接口文档的最新版本,确保系统的...

    QQ易语言留言接口

    QQ易语言留言接口的核心功能自然是发送留言,要实现这一功能,开发者必须处理网络通信和数据格式化的问题。网络通信通常通过HTTP或HTTPS协议进行,而数据格式化可能涉及到JSON或XML。开发者需要根据QQ接口文档的指示...

    短信发送接口V4.0

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

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

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

    网银在线接口

    3. 异常处理:当支付过程中出现错误或异常时,接口需要能够捕获并处理这些问题,如支付失败、退款请求等。 4. 订单状态更新:接口应能及时更新订单状态,以便商家和用户了解交易进度。 5. 日志记录:接口应记录所有...

    asp域名查询接口,无须转向其它网站!

    8. **错误处理**:当查询失败时,接口应能返回适当的错误信息,帮助调用者理解问题所在。 9. **权限控制**:根据应用场景,可能需要实施权限控制,限制非授权用户的访问,或者限制查询次数以防止滥用。 10. **版本...

    酒店api接口程序源码

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

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

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

    各大音乐网站接口

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

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

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

    芝麻信用接口demo及文档

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

    短信接口短信接口

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics