Git Product home page Git Product logo

practice-design-pattern--java-implementation's Introduction

实践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   # 流控模块,基于消息速率进行随机流控 【@模板方法模式】【@状态模式】

practice-design-pattern--java-implementation's People

Contributors

ruanrunxue avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.