开发思想
2022/8/22 6:57:16
本文主要是介绍开发思想,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
思想
策略思想
解决的问题:一类对象,不同对象有不同的处理
实现
顶级接口
-
定义规范,面向接口编程
抽象策略
-
定义一套模板,不同的交给不同的策略实现
具体策略
-
枚举 对象标识 --具体策略
-
策略集合-对象标识
观察者思想
解决的问题:当一个对象状态发生改变时,所有依赖他的对象将得到通知并自动更新
常见场景:
-
spring事件
-
消息队列
-
我们不用去关心依赖的对象,只用把自己的事情做好
实现:
-
充分解耦
-
可实现一对一和广播
顶级事件接口
具体事件
顶级订阅者接口
具体订阅者
事件发布中心
上下文思想
解决的问题:当一个参数在需要四处传递,可设置上下文,从上下文中取
实现:
-
spring提供了一系列获取容器对象的接口ApplicationContextAware....
上下文顶级接口,定义规范
具体上下文
-
保证全局唯一
-
并非容器
池化思想
线程池
-
复用线程,减少系统资源的消耗
-
便于管理线程
-
快速的响应
合理的线程池:根据不同场景,情况去构建合适的线程池,保证效率和资源消耗
场景:流程发布,构建流程轨迹
实现
CAS锁控制控制线程池唯一,只有一个线程能够进行调度(提交任务)
private AtomicBoolean started = new AtomicBoolean(false); private AtomicBoolean scheduler = new AtomicBoolean(false);
自定义阻塞队列,存放任务
private BlockingQueue<ProcessDefinition> queue = new LinkedBlockingQueue<>(512);
单个线程循环处理,allowCoreThreadTimeOut回收线程节约资源
this.executor.allowCoreThreadTimeOut(true); try { ProcessDefinition definition; while ((definition = queue.poll()) != null) { handler(definition); } } catch (Exception e) { e.printStackTrace(); } finally { scheduler.compareAndSet(true, false); if (!queue.isEmpty()) { scheduler(); } }
设计思想
并不是绝对的,灵活变通
-
构建合理的类结构,便于扩展,理解
-
提取公共方法实现复用
单一职责模式
一个类只做一个事情,可通过依赖建立联系
优点:职责分明,结构清晰,便于修改
前:
后:
开闭原则
实现不改变这个类的情况下进行扩展
实现:策略模式
前:
后:
里氏替换原则
通过继承来进行扩展
依赖倒置原则
面向接口编程
合成复用原则
多用组合代替继承
-
一般来说,如果两个类之间是"Has-A"关系,则使用组合/聚合;如果是"Is-A"关系,则使用继承。
迪米特法则
中间类
接口隔离原则
接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:
-
单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。
-
单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。
接口拆分
这篇关于开发思想的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么修改Kafka的JVM参数?-icode9专业技术文章分享
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?