API/SPI可扩展设计原则(转)】的更多相关文章

API/SPI可扩展设计原则 博客分类: [设计体系]架构模式 API/SPISPISPI原则JAVA SPISPI机制  写本篇主要是用来后面写一篇可扩展性软件设计打好基础(苦于找不到一篇关于API/SPI的好文章,只好自己写一个,欢迎指教). 概念: API:API(Application Programming Interface)表示应用程序编程接口 SPI:SPI(Service Provider Interface)表示服务提供商接口 API与SPI的关系 框架提供API及其实现,框…
前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到详尽充实,如果有好的建议或者不对的地方,还望不吝赐教斧正. 一.接口的流畅性 好的接口是流畅易懂的,他主要体现如下几个方面: 1.简单 操作某个元素的css属性,下面是原生的方法: document.querySelector('#id').style.color = 'red'; 封装之后 fun…
在邮件列表和讨论区中有很多与REST和Web API相关的讨论,下面仅是我个人对这些问题的一些见解,并没有绝对的真理,InnoQ的首席顾问Oliver Wolf在GOTO Berlin大会上开始自己的演讲“Web API设计原则”时如是说. 不要考虑端点.SOAP有一个单独入口点的外观.相比之下Web有很多入口点,它们建立在关系上,彼此之间相互连接,并且以超媒体作为关键要素.为了不让你的API成为一个只有一种接入方式的黑洞,你应该使用超媒体控制按照对听众有意义的表现方式去链接你的资源. 不要在A…
Atitit.论图片类型 垃圾文件的识别与清理  流程与设计原则 与api概要设计 v2 pbj 1. 俩个问题::识别垃圾文件与清理策略1 2. 如何识别垃圾图片1 2.1. 体积过小文件<10kb1 2.2. 增加扩展名对于无扩展名文件1 2.3. 清理非图片(bmp,jpg,jpeg,png)的文件2 2.4. 尺寸过小图片(210*150)2 2.5. 清理广告图片(高度宽度不成比例)超长超宽图片2 2.6. 清理重复图片(此结果不能加入指纹库)2 2.7. 非本类别的图片(人工识别)2…
一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的.如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的打击就更大.如果API经常发生变化,用户就会失去对提供方失去信心,从而也会影响目前的业务. 但是我们为什么还要修改API呢?为了API看起来更加漂亮?为了提供更多功能?为了提供更好的性能?还是仅仅觉得到了改变了时候了?对于用户来说,他们更愿意使用一个稳定但是看起来不那么时髦的API,这并不意味着我们…
说在前面,这篇文章是无意中发现的,因为感觉写的很好,所以翻译了一下.由于英文水平有限,难免有出错的地方,请看官理解一下.翻译和校正文章花了我大约2周的业余时间,如有人愿意转载请注明出处,谢谢^_^ Principles of good RESTful API Design 好RESTful API的设计原则 Good API design is hard! An API represents a contract between you and those who Consume your da…
好RESTful API的设计原则   说在前面,这篇文章是无意中发现的,因为感觉写的很好,所以翻译了一下.由于英文水平有限,难免有出错的地方,请看官理解一下.翻译和校正文章花了我大约2周的业余时间,如有人愿意转载请注明出处,谢谢^_^ Principles of good RESTful API Design 好RESTful API的设计原则 Good API design is hard! An API represents a contract between you and those…
转载自一位大佬 英文原版 Principles of good RESTful API Design Good API design is hard! An API represents a contract between you and those who Consume your data. Breaking this contract will result in many angry emails, and a slew of sad users with mobile apps wh…
RESTful API设计原则与规范 一.背景与基础概念 2 二.RESTful API应遵循的原则 3 1.协议(Protocol) 3 2.域名(ROOT URL) 3 3.版本(Versioning) 3 4.路径(Endpoints) 3 5.HTTP动词(HTTP Verbs) 4 6.过滤信息(Filtering) 5 7.状态码(Status Codes) 5 8.错误处理(Error handling) 6 9.返回结果(Response) 6 10.使用HATEOAS的Hype…
点击上方"前端自习课"关注,学习起来~ 前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到详尽充实,如果有好的建议或者不对的地方,还望不吝赐教斧正. 一.接口的流畅性 好的接口是流畅易懂的,他主要体现如下几个方面: 1. 简单 操作某个元素的 css 属性,下面是原生的方法: 1document.querySelector('#id').…
在设计Java API的时候总是有很多不同的规范和考量.与任何复杂的事物一样,这项工作往往就是在考验我们思考的缜密程度.就像飞行员起飞前的检查清单,这张清单将帮助软件设计者在设计Java API的过程中回忆起那些明确的或者不明确的规范.本文也可以看作为“API设计指南”这篇文章的附录. 我们还准备了一些前后比对的例子来展示这个列表如何帮助你理清设计需求,找出错误,识别糟糕的设计实践以及如何寻找改进的时机. 这个清单使用了如下的语言规范: 要 - 表示必要的设计 建议 - 表示在几个最好的设计中选…
一.接口的流畅性 好的接口是流畅易懂的,他主要体现如下几个方面: 1.简单 操作某个元素的css属性,下面是原生的方法: document.querySelectorAll('#id').style.color = 'red'; 封装之后 function a(selector, color) { document.querySelectorAll(selector)[0].style.color = color } a('#a', 'red'); 从几十个字母长长的一行到简简单单的一个函数调用…
Atitit. Api 设计 原则 ---归一化 1.1. 叫做归一化1 1.2. 归一化的实例:一切对象都可以序列化/toString  通过接口实现1 1.3. 泛文件概念.2 1.4. 游戏行业的一切皆精灵2 1.1. 叫做归一化 接口继承实质上是要求"做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象"--这在程序设计上,叫做归一化.归一化使得外部使用者可以不加区分的处理所有接口兼容的对象集合--就好象lin…
译序 Qt的设计水准在业界很有口碑,一致.易于掌握和强大的API是Qt最著名的优点之一.此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结.虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C++还不精通,可以忽略与C++强相关或是过于细节的部分,仍然可以学习或梳理关于API设计最有价值的内容).整个篇幅中有很多示例,是关于API设计一篇难得的好文章. 需要注意的是,这篇Wiki有一些内容并不完整,所以,可能会有一些阅读上的问题,我们对此做了一些相关的注释.…
API设计原则 对于云计算系统,系统API实际上处于系统设计的统领地位,正如本文前面所说,K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作,理解掌握的API,就好比抓住了K8s系统的牛鼻子.K8s系统API的设计有以下几条原则: 1. 所有API应该是声明式的. 正如前文所说,声明式的操作,相对于命令式操作,对于重复操作的效果是稳定的,这对于容易出现数据丢失或重复的分布式环境来说是很重要的. 另外,声明式操作更容易被用户使用,可以使系统向用户隐…
HTTL (Hyper-Text Template Language) 是一个高性能的开源JAVA模板引擎, 适用于动态HTML页面输出, 可替代JSP页面, 指令和Velocity相似.作者是阿里巴巴工程师梁飞,本文是在拜读了HTTL的设计原则之后提炼出的部分通用设计原则. 模型划分原则 按实体域,服务域,会话域划分. 不管你做一个什么产品,都一定有一个被操作的主体,比如:服务框架管理的Service,任务框架管理的Task,Spring管理的Bean等,这就是实体域. 即然有被操作者,就一定…
编码约定 代码风格 Dubbo 的源代码和 JavaDoc 遵循以下的规范: Code Conventions for the Java Programming Language How to Write Doc Comments for the Javadoc Tool 异常和日志 尽可能携带完整的上下文信息,比如出错原因,出错的机器地址,调用对方的地址,连的注册中心地址,使用 Dubbo 的版本等. 尽量将直接原因写在最前面,所有上下文信息,在原因后用键值对显示. 抛出异常的地方不用打印日志…
http://www.ibm.com/developerworks/cn/webservices/ws-soa-design/ 引言 面向服务的体系结构(Service-Oriented Architecture,SOA)提供了支持业务灵活性的 IT 灵活性远景.在本文中,我们将重点讨论 IT 灵活性的两个特定方面:流程实现的分离和简化.如何说明和实现各个服务对 IT 灵活性的这些方面有很大的影响,因此也对业务灵活性有很大的影响.我们此处的目标是提供支持 SOA 远景的服务说明和实现指南.本文的…
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260969.html 接口(纯粹的抽象类) ... 4 什么是接口 ... 4 接口与类的区别 ... 5 为什么要使用接口 ... 5 抽象类 ... 5 什么是抽象类 ... 5 抽象类的用…
rest,即REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性. 简介 REST (REpresentational State Transfer,表述性状态转移) .REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是RESTful. REST 定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端…
一   类的设计原则   1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (LSP) 3 接口分隔原则-Interface Segregation Principle (ISP) 4 单一职责原则-Single Responsibility Principle (SRP) 5 开闭原则-The Open-Closed Principle (OCP) 二  包的设计原则   6…
面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式,而没有把足够多的注意力放在学习面向对象的分析和设计上面.学习面向对象编程像"抽象"."封装"."多态"."继承" 等基础知识是重要的,但同时为了创建简洁.模块化的设计,了解这些设计原则也同等重要.我经常看到不同经验水平的java程序员,他们有的不知…
接口隔离原则(Interface  Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口. 从接口隔离原则的定义可以看出,他似乎跟SRP有许多相似之处. 是的其实ISP和SRP都是强调职责的单一性, 接口隔离原则告诉我们在定义接口的时候要根据职责定义“较小”的接口,不要定义“高大全”的接口.也就是说接口要尽可能的职责单一,这样更容易复用,暴露给客户端的方法更具有“针对性”, 比如定义一个接口包括一堆访问数据库的方法…
http://erlang.org/doc/design_principles/des_princ.html 图和代码皆源自以上链接中Erlang官方文档,翻译时的版本为20.1. 这个设计原则,其实是说用户在设计系统的时候应遵循的标准和规范.阅读前我一直以为写的是作者在设计 Erlang/OTP 框架时的一些原则. 闲话少叙.Let's go! 1.概述 OTP设计原则规定了如何使用进程.模块和目录来组织 Erlang 代码. 1.1 监控树 Erlang/OTP的一个基本概念就是监控树.它是…
内容总览 六大设计原则都有哪些 一.单一职责原则 二.里氏替换原则 三.依赖倒置原则 四.接口隔离原则 五.迪米特法则 六.开放封闭原则 内容详解 一.单一职责原则 单一职责原则:英文名称是Single Responsiblity Principle,简称是SRP.定义:应该有且仅有一个原因引起类的变更. 单一职责原则要求:一个接口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情. 单一职责原则的好处: 类的复杂性降低,实现什么职责都有清晰明确的定义: 可读性提高,复杂…
Hbase的Rowkey设计原则 一. Hbase介绍 HBase -> Hadoop Database,HBase是Apache的Hadoop项目的子项目.HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式,主要用来存储非结构化和半结构化的松散数据(列存NoSQL数据库) 二. 设计原则 2.1 Rowkey长度原则 Rowkey是一个二进制码流,Rowkey的长度被很多开发者建议设计在10-100个字节,不过建议是越短…
题外话 在新的项目中,推行了swagger用于对API的设计.以期待解决我们上篇博客中说到了一些现象,提升工作效率.那么,结合到当时和全项目组成员做培训,以及后续的给主要应用者做培训,以及当初自己接触到swagger的时候,我简单总结一下如何设计一个说"人"话的API(主要指rest API). 备注:哈哈,又托大了哈.就在我决定写这篇文章的时候,我特意到百度搜了一下"如何设计API",额,还是决定凑凑热闹! 如何设计API呢,原则就是:KISS. 让你的API学会…
Heroku 是业内知名的云应用平台,从对外提供服务以来,他们已经有上百万应用的托管和运营经验.其创始人 Adam Wiggins 根据这些经验,发布了一个“十二要素应用宣言(The Twelve-Factor App)”,这个设计原则对SaaS平台非常具有指导意义. 十二要素应用宣言 如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS).12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入…
面向对象的设计原则 是 OOP 编程的核心,但是我看到大多数 Java 程序员都在追求诸如 Singleton 模式,Decorator 模式或 O​​bserver 模式之类的设计模式,而对学习面向对象的分析和设计没有给予足够的重视.了解诸如抽象,封装,多态和继承之类的面向对象程序设计的基础很重要.但是,与此同时,了解面向对象的设计原则也同样重要.它们将帮助您创建简洁的模块化设计,将来可以轻松进行测试,调试和维护. 我经常见过各种经验水平的 Java 程序员和开发人员,他们要么从未听说过这些…
封装: 1.隐藏实现细节:2.恰当地公开接口:3.将接口和实现分开,增强可维护性:(实现细节改变时,使用该类的客户端程序不需要改变) 继承: 1.描述联结类的层次模型;2.通过抽象,表达共性,实现类的重用;3.通过子类增加方法和属性以及重写方法,表达差异性; 多态: 1.屏蔽子类的差异性,针对共性/接口编程:(向上转型)2.增强可扩展性: 相关设计原则(设计模式一般遵守的原则):开闭原则(Open-Closed Principle, OCP):软件实体应该对扩展开放,对修改(对已有软件模块.特别…