Skip to content

lilclimate/Practice-Design-Pattern--Java-Implementation

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 

Repository files navigation

实践GoF的23种设计模式:Java实现

文章目录

归类 模式 示例代码 文章
SOLID原则 单一职责原则(SRP) Registry 【Java实现】实践GoF的23种设计模式: SOLID原则
开闭原则(OCP) Pipeline 【Java实现】实践GoF的23种设计模式: SOLID原则
里氏替换原则(LSP) PipelineFactory 【Java实现】实践GoF的23种设计模式: SOLID原则
接口隔离原则(ISP) Mq 【Java实现】实践GoF的23种设计模式: SOLID原则
依赖倒置原则(DIP) Db 【Java实现】实践GoF的23种设计模式: SOLID原则
创建型模式 单例模式(Singleton) Network
建造者模式(Builder) ServiceProfile.Builder
工厂方法模式(Factory Method) SidecarFactory
抽象工厂模式(Abstract Factory) ConfigFactory
原型模式(Prototype) Cloneable
结构型模式 适配器模式(Adapter) DslResultRender
桥接模式(Bridge) Pipeline
组合模式(Composite) Pipeline
装饰者模式(Decorator) FlowCtrlSidecar
外观模式(Facade) ShoppingCenter
享元模式(Flyweight) RegionTable
代理模式(Proxy) CacheDbProxy
行为型模式 责任链模式(Chain Of Responsibility) FilterChain
命令模式(Command) Command
迭代器模式(Iterator) TableIterator
中介者模式(Mediator) Mediator
备忘录模式(Memento) CmdHistory
观察者模式(Observer) SocketImpl
状态模式(State) FcState
策略模式(Strategy) InputPlugin
模板方法模式(Template Method) AbstractFcState
访问者模式(Visitor) TableVisitor

示例代码demo介绍

示例代码demo工程实现了一个简单的分布式应用系统(单机版),该系统主要由以下几个模块组成:

  • 网络 Network,网络功能模块,模拟实现了报文转发、socket通信、http通信等功能。
  • 数据库 Db,数据库功能模块,模拟实现了表、事务、dsl等功能。
  • 消息队列 Mq,消息队列模块,模拟实现了基于topic的生产者/消费者的消息队列。
  • 监控系统 Monitor,监控系统模块,模拟实现了服务日志的收集、分析、存储等功能。
  • 边车 Sidecar,边车模块,模拟对网络报文进行拦截,实现access log上报、消息流控等功能。
  • 服务 Service,运行服务,当前模拟实现了服务注册中心、在线商城服务集群、服务消息中介等服务。

主要目录结构如下:

├── db                # 数据库模块,定义Db、Table、TableVisitor等抽象接口 【@单例模式】
│   ├── cache         # 数据库缓存代理,为Db新增缓存功能 【@代理模式】
│   ├── console       # 数据库控制台实现,支持dsl语句查询和结果显示 【@适配器模式】
│   ├── dsl           # 实现数据库dsl语句查询能力,当前只支持select语句查询 【@解释器模式】
│   ├── exception     # 数据库模块相关异常定义
│   ├── iterator      # 遍历表迭代器,包含按序遍历和随机遍历 【@迭代器模式】
│   └── transaction   # 实现数据库的事务功能,包括执行、提交、回滚等 【@命令模式】【@备忘录模式】
├── monitor        # 监控系统模块,采用插件式的架构风格,当前实现access log日志etl功能
│   ├── config     # 监控系统插件配置模块  【@抽象工厂模式】【@组合模式】
│   │   ├── json   # 实现基于json格式文件的配置加载功能
│   │   └── yaml   # 实现基于yaml格式文件的配置加载功能
│   ├── model     # 监控系统模型定义
│   │   └── schema   # 监控系统模型对应相关的数据表定义
│   ├── exception  # 监控系统相关异常
│   ├── filter     # Filter插件的实现定义  【@责任链模式】
│   ├── input      # Input插件的实现定义   【@策略模式】
│   ├── output     # Output插件的实现定义
│   ├── pipeline   # Pipeline插件的实现定义,一个pipeline表示一个ETL处理流程 【@桥接模式】
│   └── plugin     # 插件抽象接口定义
├── mq          # 消息队列模块
├── network        # 网络模块,模拟网络通信,定义了socket、packet等通用类型/接口  【@观察者模式】
│   └── http       # 模拟实现了http通信等服务端、客户端能力
├── service           # 服务模块,定义了服务的基本接口
│   ├── mediator      # 服务消息中介,作为服务通信的中转方,实现了服务发现,消息转发的能力 【@中介者模式】
│   ├── registry      # 服务注册中心,提供服务注册、去注册、更新、 发现、订阅、去订阅、通知等功能
│   │   └── model    # 服务注册/发现相关的模型定义 【@原型模式】【@建造者模式】
│   │        └── schema    # 服务注册中心相关的数据表定义 【@访问者模式】【@享元模式】
│   └── shopping      # 模拟在线商城服务群的定义,包含订单服务、库存服务、支付服务、发货服务 【@外观模式】
└── sidecar        # 边车模块,对socket进行拦截,提供http access log、流控功能 【@装饰者模式】【@工厂模式】
    └── flowctrl   # 流控模块,基于消息速率进行随机流控 【@模板方法模式】【@状态模式】

About

实践GoF的23种设计模式:Java实现

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published