LAP框架:一个用于软件架构设计、架构重构的Java编程框架

针对Java开发者的灵魂拷问:

1、设计时,如何更方便的与产品沟通?原有的设计是否有不合理的?绘制的流程图大家都能理解吗?

2、梳理或新设计的流程,关键逻辑是否有遗漏,与代码是一致的吗?

3、自测&测试时,是否所有必要的逻辑分支都测试到了?

我们先看一段简单的代码:

if(...){return m1(...);
}else if(...){return m2(...);
}else{return m3(...);
}

以上的代码,相信大家很容易通过抽象接口或其它方式实现将来的扩展,但两段不同的类似逻辑,是否可以复用呢?通常因为入参类型不同及数量不同等原因,比较难以解决复用问题。

基于LAP框架则如下:

class MyService{//构建路由策略private Func<MyResult> policy=new RouteDecision().addRoutes(this,"typePolicy").build(MyResult.class);@Context(MyServiceContext.class)public MyResult service(MyParam param){return policy.apply();}@Group("typePolicy")@Condition(value="${param.type==1",envKey="typePolicy_1")MyResult m1(MyParam param1){...}@Group("typePolicy")@Condition(value="${param.type==2",envKey="typePolicy_1")MyResult m2(Foo foo){...} //Foo对象可自动从MyServiceContext中取得@Group("typePolicy")//缺省路由MyResult m3(MyParam param1){...}}
@Component
@Scope("prototype")//Spring 原型模式
class MyServiceContext extends CachedContext{@Setter@Getterprivate MyParam param;@Autowireprivate FooService fooService;public Foo getFoo(){//方法只会在MyService.server的调用线程只调用fooService.findById一次Func1<Long,Foo> findById=create(fooService:findById).around(new LogAround());//允许输出调用日志(方法入参及出参、异常)return enableCache(findById).accept(param.getFooId());}}

1、LAP框架解决了在不同场景下类似路由策略的复用问题,也支持各种串行、循环、并行、异步、责任链、灰度、AOP等不同策略模式的应用,并允许自定义更多的扩展。

2、LAP框架支持数据逻辑和业务逻辑分离,便于关注我们的核心业务逻辑;同时也优化代码结构,提升整体代码质量。

3、LAP框架定义的组件可以收集核心逻辑的运行情况,并生成跟踪日志和流程图。因此可以基于代码或伪代码优化我们的研发流程:

上面的代码可生成流程图如下,在产品、研发、测试之间沟通更加高效

FAQ:

1、此框架处于什么阶段?

已初步完成框架基础设计,Demo可运行(除生成流程图),计划2023年1月前开源

2、我能参与吗?

欢迎参与LAP框架建设

三分钟了解LAP Framework编程框架相关推荐

  1. 三分钟理解Python函数式编程与闭包

    函数式编程 函数式编程这个概念我们可能或多或少都听说过,刚听说的时候不明觉厉,觉得这是一个非常黑科技的概念.但是实际上它的含义很朴实,但是延伸出来许多丰富的用法. 在早期编程语言还不是很多的时候,我们 ...

  2. 2-3 Coursera吴恩达《改善深度神经网络》第三周课程笔记-超参数调试、Batch正则化和编程框架

    上节课2-2 Coursera吴恩达<改善深度神经网络>第二周课程笔记-优化算法我们主要介绍了深度神经网络的优化算法.包括对原始数据集进行分割,使用mini-batch 梯度下降(mini ...

  3. Spring - Java/J2EE Application Framework 应用框架 第 5 章 Spring AOP: Spring之面向方面编程G

    第 5 章 Spring AOP: Spring之面向方面编程 5.1. 概念 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP). 面向对象将应用程序分解成 各个层 ...

  4. Spring - Java/J2EE Application Framework 应用框架 第 5 章 Spring AOP: Spring之面向方面编程

    第 5 章 Spring AOP: Spring之面向方面编程 5.1. 概念 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP). 面向对象将应用程序分解成 各个层 ...

  5. DL:听着歌曲《成都》三分钟看遍主流的深度学习的神经网络的发展框架(1950~2018)

    DL:听着歌曲<成都>三分钟看遍主流的深度学习的神经网络的发展框架(1950~2018) 视频链接:听着歌曲<成都>三分钟看遍主流的深度神经网络的发展框架(1950~2018) ...

  6. 三分钟极速搭建LP框架{{1019}}

    LP框架极速搭建(用时3分钟) 公司来了新项目,我们如何快速大家一个成熟框架快速开发呢?是copy之前的项目做些更改还是重新一点点搭建? 无论怎么做我们目的就是借鉴之前的开发经验复用到下一个项目当中. ...

  7. C语言实现OOP——轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍(三)

    文章目录 C 语言编程框架 LW_OOPC 介绍(三) 方案的可扩展性如何? LW_OOPC最佳实践 LW_OOPC的优点: LW_OOPC的缺点: 总结: 幕后花絮: 参考资料: C 语言编程框架 ...

  8. miniui mysql_三分钟介绍强大方便的前端框架Jquery MiniUI

    原标题:三分钟介绍强大方便的前端框架Jquery MiniUI jQuery MiniUI - 专业WebUI控件库. 它能缩短开发时间,减少代码量,使开发者更专注于业务和服务端,轻松实现界面开发,带 ...

  9. 三分钟了解SAFe(Scaled Agile Framework)

    1.SAFe 概述 SAFe(Scaled Agile Framework)是一种面向大型企业的敏捷开发框架,旨在协调多个团队和部门的协同工作,以实现高效的软件开发和交付.下面是SAFe框架的简单介绍 ...

最新文章

  1. 马斯克39也火星计划PPT
  2. Hadoop 学习笔记 (十一) MapReduce 求平均成绩
  3. linux监听端口丢失,linux – 如果没有监听端口,则为Systemd重启服务
  4. [转载] C Primer Plus 第6章 C控制语句 6.16 编程练习及答案
  5. 数组实例的includes()方法
  6. c语言删除行尾的空格,新人提问:如何将输出时每行最后一个空格删除
  7. 利用反射来实现动态代理
  8. switchhost使用记录
  9. jQuery treeTable
  10. 详解:什么是VXLAN?
  11. re正则表达式过滤标题特殊字符,只保留中英文及数字
  12. 磕碰,擦伤了,紧急处理方法
  13. Cocos2d-x制作跨平台太空射击游戏
  14. 437 路径总和-02
  15. EMC共模干扰与差模干扰是什么?怎么解决?
  16. QGIS编译(跨平台编译)之三十九:QCA编译、QCA安装(Windows、Linux、MacOS环境下编译、安装)
  17. 公众号选题方向有哪些?
  18. 统计学基本知识(四)
  19. 大学毕业必须考的计算机证书,大学4年,一定要考的4大证书,不考毕业后悔死...
  20. 旷厂练习生 Vol.15 | CV 小白在旷视 4 个月就能写顶会 paper?来听听机甲大师 Albert 的故事!...

热门文章

  1. 【用户运营】滴滴出行活动策划、用户成长体系、用户增长逻辑分析
  2. 使用UI框架时 css不生效 使用/deep/完美解决避免污染全局样式
  3. 习题6-5 使用函数验证哥德巴赫猜想 (20 point(s))
  4. vue3使用tinymce编辑器
  5. Python学习日记1
  6. Linux硬盘管理:分区、GParted分区操作
  7. 用计算机录音并播放教学设计,八年级信息技术《录制声音》说课稿
  8. Xftp 或Xshell 要继续使用此程序,您必须应用最新的更新或使用新版本
  9. 联想台式机无法从U盘启动的解决方案
  10. 北京全市医保定点医疗机构直接社保