一.编程范式

命令式编程
面向对象编程
声明式编程
函数式编程

面向对象:
封装,抽象,继承,多态

泛化和实现
依赖
关联、聚合、组合

二:设计模式与原则

单一职责原则:
类的设计
开闭原则:
模块、类、函数应该对扩展开发,对修改关闭 - 继承、多态
里氏替换原则
派生类可完全替代基类-多态
接口隔离原则
客户端不应该依赖于它所不需要的接口 - 低耦合
依赖倒置原则
高级模块不应该依赖低级模块,两者都应该依赖抽象
抽象不应该依赖细节,细节应该依赖与抽象
-解耦合

三:模式

创建型模式

单例模式
一个对象只创建一个实例
工厂模式
简单工厂模式(静态工厂模式-利用反射生产产品,newInstance)
工厂方法模式(抽象化工厂类,实例化产品的实现转移到特定的子类中)
抽象工厂模式
建造者模式(build)
原型模式 (克隆对象)
对象池模式 (连接池等)

行为型模式 (组合/委托)

责任链模式
流程,工作流引擎
命令模式 command
解释器模式
迭代器模式
观察者模式
中介者模式
备忘录模式
状态模式
策略模式
模板方法模式
空对象模式
访问者模式

结构型模式

适配器模式
代理模式
装配器模式
桥接模式
组合模式
外观模式
享元模式

函数式编程

lambda表达式
纯函数
引用透明性
初等函数
高阶函数
组合
柯里化
闭包
不可变性
函子
加强型函子
单子

函数设计模式

MapReduce
(monad(单子)的一种形式)
将现有任务拆分成多个子任务,各自独立运行,并聚合结果(归约)
借贷模式
确保资源超出范围就会被确切处理。(如内存管理,垃圾回收)
尾调用优化
不使用堆栈空间的情况下调用函数的技术。
不破坏堆栈的前提下使用递归调用。
记忆化
执行around方法

响应式编程

响应性
可恢复性
弹性
消息驱动

响应式设计模式

响应模式
请求-响应模式
异步通信模式
缓存模式
扇出与最快响应模式
快速失败模式

弹性模式
断路器模式
故障处理模式
有限队列模式
监控模式
舱壁模式

柔性模式
单一职责模式/简单组件模式/微服务模式
无状态服务模式
自动伸缩模式
自包含模式

消息驱动通信模式
事件驱动通信模式
publish-subscribe (发布-订阅模式)
幂等性模式

应用架构

分层架构
表示层
控制层/web服务层
服务层
业务层
数据访问层
MVC架构
面向服务架构
微服务架构
无服务架构