设计模式目录
- 设计模式导读 √
- 面向对象 √
- 设计原则 √
- 规范与重构 √
- 范式-创建型
– 建造者builder模式√ - 范式-结构性 √
- 范式-行为型
- 范式-总结
- 实战-开源
- 实战-项目
- 实战-总结
/* ------------------八大设计原则 start------------------ */
- 单一原则
- 开闭原则
- 子类替换父类(里氏替换原则)
- 隔离原则
- 简单原则(KISS: keep it SimpleShortStupidStraightforward)
- 不重复原则(Dont Repeat yourself)
- 高内聚松耦合原则
- 依赖倒置原则
判断类是否职责单一
- 类中属性过多,代码行过多,影响阅读和维护
- 过多依赖其他类
- 私有方法过多
- 很难取一个具体的名字
- 类中大量方法集中操作几个属性,考虑将这几个属性提取出来
开闭原则
在已有的代码基础上扩展代码(新增模块/类/方法等),对已有的代码关闭修改
通过组合、接口、委托三个技术手段,我们完全可以替换掉继承
组合和接口替代is-a关系
接口实现多态特性
代码复用通过组合和委托实现
/* ------------------八大设计原则 end------------------ */
设计原则实战: 积分系统
架构设计:
设计一: 系统相对复杂,但是耦合度是最松的
积分系统只负责增删改查;
营销系统向积分系统发送增删改查;
设计二: 分散 各改个的
订单系统/签到系统等各自向积分系统发送增删改成
设计三: 耦合度高
订单系统/签单系统等向积分系统发送单号,
积分系统自己再去查询订单进行增删改查
/* ------------------设计模型 start------------------ */
使用建造者builder模式:
- 在构造参数很多的时候,可以使代码"一气呵成"简洁紧凑
- 在最后调用builder()方法的时候还能校验参数们之间搭配是否合理
/* ------------------设计模型 end------------------ */
介绍一个东西:
必须介绍功能,
罗列优点,将将及格
进一步指出缺点, 及格到优秀.
间隙锁
1.1 如果查询没有命中索引,则退化为表锁;
1.2 如果等值查询唯一索引且命中唯一一条记录,则退化为行锁;
1.3 如果等值查询唯一索引但没有命中记录,则退化为临近节点的间隙锁;
1.4
InnoDB
行级锁-共享锁(S锁) - 不会阻塞对该行的读请求,但是会阻塞对该行的写请求
行级锁-排他锁(X锁) -