导图社区 高质量代码设计
针对面向对象代码设计的设计原则和方法的思考。
每本书的封面之下都有一套自己的骨架,作为一个分析阅读的读者,责任就是要找出这个骨架。一本书出现在面前时,肌肉包着骨头,衣服包裹着肌肉,可说是盛装而来。读者用不着揭开它的外衣或是撕去它的肌肉来得到在柔软表皮下的那套骨架,但是一定要用一双X光般的透视眼来看这本书,因为那是了解一本书、掌握其骨架的基础。本思维导图从三个方面去描述如何阅读一本书,希望能对你有所启迪!
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
高质量代码设计
两个基本原则
高内聚
偶尔内聚
逻辑内聚:逻辑相似,少量参数区分
时间内聚: 事务一致性内聚
通信内聚: 面向同一数据结构
顺序内聚: 产生依赖
功能内聚
低耦合
无直接耦合
数据耦合: 传递简单数据
标记耦合: 传递数据结构
控制耦合: 传递控制变量
公共耦合:通过公共数据产生耦合
内容耦合
决策的关键
对事实的量化认定
对当前事实的量化
对价值的量化
对代价的量化
对风险的考量
对未来可能性的量化
对变更的量化
一个常用手段
计算机科学中的所有的问题, 都可以通过增加一个中间层来解决
逻辑共享
面向接口
隔离变化
多态
只有一个问题不行,就是中间层过多的问题
权衡原则与实用价值
为了给救护车让路,是可以闯红灯的
不可忽略 概率 与 价值 的度量
没必要为每个人都配备一整套避雷设备
永远基于事实做量化,而不是基于一个强迫症患者的直觉
当改动的风险和代价过高时,要允许代码中的不合理但可行的设计方案存在(只要注释里讲清楚代码带来的额外编码依赖就行)
当然,要长时间积累量化经验和留存量化依据
做好数据统计工作
OOP设计模式
创建型
单例
原型
一个构造函数参数很多,默认值也很多类的工厂
工厂
抽象工厂
皮肤套装
建造者
拼接方法作为对象
结构型
代理
适配器
重构时用,设计时最好不要有
桥接
用组合代替不同维度方向的继承
装饰
核心不变,增加功能
外观
大粒度的接口
享元
资源池
组合
树状递归组合
行为型
模板方法
拆分固定和变化的代码段
策略
命令
记忆操作
责任链
类似于调用链中的异常处理
消息的链式广播
提前判断会造成逻辑冗余
状态机
不仅是一种设计模式,也是一种思考问题的方式
中介者
拓扑改变,网状变星形
迭代器模式
遍历器
访问者模式
遍历器与处理拆分
备忘录模式
日志
解释器模式
自定义一个脚本语言
OOP六原则
SRP 单一职责原则
LKP 最少知识原则
高内聚低耦合
OCP 开闭原则
封装原则
LSP 里氏替换原则
继承原则
ISP 接口隔离原则
DIP 依赖倒置原则
面向接口编程 多态原则