最近一直在开发框架,对框架的设计有很多的疑惑,梁飞大神的这篇文章让我有了更多认识.这里收藏一下.也推荐阅读原文 :)
API 和 SPI 分离(用户 API 和 扩展 API 分离)
实体域(核心领域模型), 服务域,会话域
在重要的过程上设置拦截接口(过滤器),允许外置行为,这是基本扩展方式
在重要的状态上留出监听事件接口
接口职责要单一,具有可组合性
微核插件式,平等对待第三方。微核不带有功能性,而是一个生命周期和集成容器,例如Spring 的 BeanFactory。 平等对待第三方,则是作者要把自己当扩展者。
不要控制外部对象的生命周期,框架只需使用这些实例
可配置一定可编程,保持友好的默认约定
区分命令与查询,查询一定幂等、无副作用,命令一定是 void。方法尽量前置断言,类似 Spring。
10 增量实扩展,而不是扩展式扩展,不要扩充原始核心概念。
参考:梁飞博客
http://javatar.iteye.com/blog/706098
http://javatar.iteye.com/blog/690845