1. 设计模式分为:
- 设计: a. 就是设计原则 b. 设计模式的来源依据,是怎么来的. c. 是一种指导思想.
- 什么是设计? a. 设计按照哪一种思路或标准来实现功能. b. 根据指导思想,结合开发经验总结的"模板". c. 关联:从设计到模式.
- 为什么有设计? a. 功能相同,但有不同的实现方案. b. 前提是需求的迭代改变,设计的作用就才能体现.否则一次性功能就没有迭代一说.
2. 缺点:
(1). 代码规范性或设计模式的痛点:
- 业务开发中为什么不能很好应用设计模式的因素?
- 性能: a. 在极端情况下,如Java语言,设计模式面临着更多的类文件、更多的代码. b. 在有些类加载和内存使用上的成本,自然是略微高于不使用设计模式: (1). 有些设计模式(如:单例模式、享元模式等)就是为了提高性能、节约资源. c. 良好的代码维护性要远远大于微小的性能开销.
- 类爆炸: a. 复杂的设计模式,需要依靠业务建模,并不能拿来即用,甚至生抄硬套. b. 设计缺陷、过度设计,单纯为了使用设计模式,写出对应逻辑复杂的代码,类会爆炸. c. 如策略模式,如果业务情况很多,也必须把每个情况实现类写出来.
- 团队成员编码水平: a. 很难约束初级工程师维护高内聚、低耦合、开闭原则、设计模式、六大原则等设计思想 b. 初级工程师对框架适应性: (1). 如代码里没有统一异常处理,到处是自己的try catch. (2). 项目中里工具类库管理.
- 项目大环境: a. 架构特点: (1). 流量时代、高并发、大流量 (2). 各种微服务、中间件建设等 (3). 关注点在于加机器、加中间件、加配置等上层建设,忽略团队代码水平,也没有review原则
- 时间成本与敏捷开发: a. 业务频繁变动、项目快速迭代 b. 修改代码,思考全局性(是否其它代码也有相同修改需求)、正确性、以及分支影响性(是否影响其他逻辑).
- 人员流动