创建型模式
抽象工厂模式
主要作用:提供创建一系列创建相关对象的接口
应用场景:游戏服装套装,操作系统的组件模块等等
模式代码架构:
生成器模式
主要作用:逐步构建复杂对象
适用场景:盖房子,定制牛肉面,定制汽车等等
模式代码架构:
工厂方法模式
主要作用:将产品的实例化延迟到具体工厂中完成。
适用场景:创建对象需要使用大量重复代码。
模式代码架构:
原型模式
主要作用:通过复制现有对象来创建新对象。
适用场景:需要使用大量的复制,复制复杂的数据结构。
模式代码架构:
单例模式
主要作用:保证一个类只有一个实例,并为该实例提供了一个全局唯一的访问节点。
使用场景:资源分享(数据库),配置管理,缓存,日志管理,对象工厂
模式结构:
结构型模式
适配器模式
主要作用:让接口不兼容的对象能够相互合作
使用场景:连接遗留代码和新系统,连接第三方库,单元测试
模式结构:
桥接模式
主要作用:在抽象和实现之间搭建起桥梁
使用场景:GUI框架,绘图程序,数据库驱动系统
模式架构:
组合模式
主要作用:实现递归树状结构
使用场景:文件系统、组织结构或图形界面组件
模式架构:
装饰模式
主要作用:在运行时动态添加新功能
使用场景:GUI中的可视化组件,网络通信中的协议层次,日志记录系统中的不同日志级别和日志输出方式的组合,权限控制系统中的不同权限组合
模式架构:
外观模式
主要作用:为复杂系统提供简单接口,简化复杂系统的交互模式
应用场景:跨平台跨系统的程序,电商系统,复杂的library
架构模式:
享元模式
主要作用:最小化内存使用
应用场景:文字编辑器和处理器,图形应用,游戏开发
模式架构:
代理模式
主要作用:充当中介
应用场景:虚拟代理,缓存代理,保护代理,日志记录,远程对象,智能引用,监控和审计
模式架构:
行为型模式
责任链模式
主要作用:帮助处理请求逻辑顺序
应用场景:中间件,GUI事件处理,异常处理,工作流
模式架构:
命令模式
主要作用:把请求转成单独的类
应用场景:文本编辑器、图形编辑器
解释器模式
主要作用:评估语言或表达式
应用场景:编译器和解释器、配置文件解析器、查询语言解析器
迭代器模式
主要作用:遍历集合元素,同时不暴露集合的内部表示
应用场景:数据访问、文件系统、社交网络
中介者模式
主要作用:用中介封装一系列的对象交互
应用场景:聊天应用、空中交通控制系统、GUI框架、工作流引擎
备忘录模式
主要作用:保存并恢复对象的内部状态
应用场景:文本编辑器、绘图应用程序、数据库系统、游戏开发、版本控制系统
观察者模式
主要作用:定义一对多的依赖关系,让多个观察者同时监听一个主题对象。
应用场景:社交媒体平台、股票市场、GUI工具、实时消息系统
状态模式
主要作用:允许一个对象在其内部状态改变时改变其行为
应用场景:游戏角色状态切换、网络连接状态管理、订单状态管理
策略模式
主要作用:定义并封装一系列算法,使它们可以相互替换。
应用场景:支付方式、压缩和解压缩算法、图像渲染。
模块方法模式
主要作用:定义算法骨架
应用场景:数据库访问、GUI设计、框架和库
访问者模式
主要作用:将数据结构和数据操作分离,使操作集合可以独立于数据结构变化。
应用场景:编译器、文档转换