# dddProject **Repository Path**: narah/dddProject ## Basic Information - **Project Name**: dddProject - **Description**: 设计模式demo spring源码demo - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/narah/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-13 - **Last Updated**: 2024-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1 工厂设计模式是我们常见的设计模式 工厂负责生产 并且屏蔽差异 比如营销活动中的 奖品接口 3 桥接是通过将抽象部门和实现部分分离, jdbc驱动的实现 设计实现 微信支付宝 和支付方式(刷脸 密码 指纹)的笛卡尔积组合 4 组合模式 通过一堆的链接组织出一颗结构树,而这种通过把相似对象组合成一组可以被调用的结构树对象的设计思路叫做组合模式 应用例子 营销设计中的 决策树 规则树包装 还可以做服务包装将不同的接口进行组合配置,对外提供服务能力 使用哪种 一会ab组合 一会abc组合 一会abcd组合 实现例子 对不同的任务画像发券 性别 / \ 男 女 / \ / \ <25 >=25 <25 >=25 A B C D 6 建造者模式 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示 玩王者的初始化界面 可以根据模式随意组合 7 原型模式 通过拷贝原型对象来创建对象 包括 深拷贝 浅拷贝 适用场景 类初始化需要消耗非常多的资源,包含数据 硬件资源 一个对象多个修改者 此例子 上机考试多套实体,每个人的实体和答案乱序 9 命令模式 命令模式 命令和命令执行者分离,降低耦合 10中介模式要解决的就是复杂功能之间重复调用的问题 应用场景 ORM框架屏蔽了数据库差异 手写mybatis 中介的主要目的是 提供统一的服务,屏蔽各种差异,例如N种抽奖服务都可以利用中介模式统一封装,对外提供能力 11观察者模式 spring 常用观察者模式,观察者模式系统内部解耦,除了原生的 spring也提供了@EventListener 默认同步,异步需配置线程池 12 策略模式 我只负责定义执行顺序和基本策略,具体每一步怎么执行靠身份来自动识别 13 访问者模式 访问者要解决的核心事项是在一个稳定的数据结构下,不同的访问不同的视觉,要解决这种业务解耦的一种设计模式。