大白话说Java设计模式-50-综合实战下:技术架构全链路设计模式应用

发布时间:2026/9/13 22:29:04
大白话说Java设计模式-50-综合实战下:技术架构全链路设计模式应用 大厂规范Java项目工具类 — 08_IP地址合法性校验工具类Java企业级代码大白话说Java设计模式-50-综合实战下技术架构全链路设计模式应用一句话本质技术架构全链路是设计模式的工业化战场6 大模式支撑微服务架构。️ 标签综合实战 / 技术架构 / 微服务 / 设计模式协作 / 大白商城 适合中高级后端 / 架构师目录一、技术架构全链路图二、6 大设计模式协作三、完整代码实战四、模式协作关系五、架构演进总结六、本篇小结 下篇预告一、技术架构全链路图用户请求 ↓ ┌──────────────────────────────────────┐ │ Gateway外观 │ │ 网关层统一对外 │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 鉴权/限流/日志责任链 │ │ AuthFilter → RateLimitFilter │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ Controller适配器 │ │ REST API 适配 │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ Service外观 中介者 │ │ 业务逻辑 事件协调 │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ Repository桥接 │ │ JDBC / JPA / Redis 多数据源 │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 缓存享元 装饰器 │ │ Redis 缓存 装饰增强 │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 远程调用代理 │ │ Feign / Dubbo 远程调用 │ └──────────────────────────────────────┘二、6 大设计模式协作2.1 模式一外观API Gateway/** * ✅ 外观API Gateway */RestControllerRequestMapping(/api)publicclassApiGateway{AutowiredprivateOrderServiceClientorderClient;AutowiredprivateUserServiceClientuserClient;AutowiredprivateGoodsServiceClientgoodsClient;/** * ✅ 统一对外接口 */GetMapping(/order/{id})publicOrderDTOgetOrder(PathVariableStringid){// 1️⃣ 调订单服务OrderorderorderClient.getById(id);// 2️⃣ 调用户服务UseruseruserClient.getById(order.getUserId());// 3️⃣ 调商品服务ListGoodsgoodsgoodsClient.getByIds(order.getGoodsIds());// 4️⃣ 组装 DTOreturnnewOrderDTO(order,user,goods);}}作用统一对外封装多个服务。2.2 模式二责任链鉴权/限流/日志/** * ✅ 责任链API 拦截 */ComponentpublicclassAuthFilterimplementsFilter{OverridepublicvoiddoFilter(ServletRequestreq,ServletResponseresp,FilterChainchain){// 1️⃣ 鉴权if(!authenticate(req)){return;}chain.doFilter(req,resp);}}ComponentpublicclassRateLimitFilterimplementsFilter{OverridepublicvoiddoFilter(ServletRequestreq,ServletResponseresp,FilterChainchain){// 2️⃣ 限流if(!rateLimit(req)){return;}chain.doFilter(req,resp);}}ComponentpublicclassLogFilterimplementsFilter{OverridepublicvoiddoFilter(ServletRequestreq,ServletResponseresp,FilterChainchain){// 3️⃣ 日志log(req);chain.doFilter(req,resp);}}作用加新拦截只加 1 个 Filter。2.3 模式三适配器REST API/** * ✅ 适配器REST API 适配业务 */RestControllerRequestMapping(/api/order)publicclassOrderController{AutowiredprivateOrderServiceorderService;PostMappingpublicOrderResultcreate(RequestBodyOrderRequestrequest){// 1️⃣ 适配REST → 业务OrderContextcontextadaptRequest(request);// 2️⃣ 业务调用OrderResultresultorderService.createOrder(context);// 3️⃣ 适配业务 → RESTreturnadaptResult(result);}privateOrderContextadaptRequest(OrderRequestrequest){OrderContextcontextnewOrderContext();context.setUserId(request.getUserId());// ... 适配returncontext;}}作用隔离 REST 和业务。2.4 模式四装饰器缓存增强/** * ✅ 装饰器缓存装饰 */ServicepublicclassOrderServiceCacheDecoratorimplementsOrderService{AutowiredprivateOrderServiceorderService;AutowiredprivateRedisTemplateString,OrderredisTemplate;OverridepublicOrdergetById(Stringid){// 1️⃣ 装饰先查缓存OrdercachedredisTemplate.opsForValue().get(order:id);if(cached!null){returncached;}// 2️⃣ 真实调用OrderorderorderService.getById(id);// 3️⃣ 装饰写缓存redisTemplate.opsForValue().set(order:id,order,1,TimeUnit.HOURS);returnorder;}}作用给原有功能加缓存。2.5 模式五桥接多数据源/** * ✅ 桥接JDBC 抽象 */publicinterfaceDataSource{ConnectiongetConnection();}publicclassMysqlDataSourceimplementsDataSource{OverridepublicConnectiongetConnection(){returnmysqlPool.getConnection();}}publicclassRedisDataSourceimplementsDataSource{OverridepublicConnectiongetConnection(){returnredisPool.getConnection();}}/** * 桥接抽象 实现分离 */publicabstractclassRepository{protectedDataSourcedataSource;// ✅ 桥接publicabstractObjectquery(Stringsql);}publicclassJdbcRepositoryextendsRepository{OverridepublicObjectquery(Stringsql){ConnectionconndataSource.getConnection();// ...}}作用抽象和实现分离可独立扩展。2.6 模式六代理远程调用/** * ✅ 代理Feign 远程调用 */FeignClient(nameorder-service)publicinterfaceOrderServiceClient{GetMapping(/order/{id})OrdergetById(PathVariableStringid);}/** * Spring 自动生成代理 * 实际调用变成 HTTP 请求 */AutowireprivateOrderServiceClientorderClient;作用调用方不知道是本地还是远程。三、完整代码实战3.1 技术架构服务综合/** * ✅ 技术架构服务6 大模式协作 */ServicepublicclassTechArchitectureService{AutowiredprivateApiGatewayapiGateway;// 外观AutowiredprivateOrderServiceCacheDecoratororderService;// 装饰器 代理AutowiredprivateApplicationEventPublishereventPublisher;// 中介者/** * ✅ 完整技术架构 */publicTechResultprocess(TechRequestrequest){// 1️⃣ 外观API 网关// 2️⃣ 责任链鉴权/限流/日志// 3️⃣ 适配器REST → 业务// 4️⃣ 装饰器缓存增强// 5️⃣ 桥接多数据源// 6️⃣ 代理远程调用returntechResult;}}3.2 Spring Cloud 集成/** * ✅ Spring Cloud 全家桶 * - Gateway外观 * - OpenFeign代理 * - Sentinel责任链 * - Sleuth装饰器 * - Nacos中介者 */SpringBootApplicationEnableDiscoveryClientEnableFeignClientspublicclassMallApplication{publicstaticvoidmain(String[]args){SpringApplication.run(MallApplication.class,args);}}四、模式协作关系技术架构全链路用了哪些模式 │ ├── 1. 外观Facade │ └── API Gateway 统一对外 │ ├── 2. 责任链Chain of Responsibility │ └── 鉴权/限流/日志 Filter │ ├── 3. 适配器Adapter │ └── REST ↔ 业务 │ ├── 4. 装饰器Decorator │ └── 缓存增强 │ ├── 5. 桥接Bridge │ └── JDBC 抽象 ↔ 实现 │ └── 6. 代理Proxy └── Feign 远程调用4.1 模式协作图┌──────────────────────────────────────┐ │ Gateway外观 │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ Filter Chain责任链 │ │ Auth → RateLimit → Log │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ Controller适配器 │ │ REST ↔ 业务 │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ Service外观 装饰器 │ │ 业务 缓存 │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ Repository桥接 │ │ JDBC / JPA / Redis │ └──────────────┬───────────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 远程调用代理 │ │ Feign / Dubbo │ └──────────────────────────────────────┘五、架构演进总结5.1 单体到微服务演进路径 ├── 单体1 个应用 │ └── 用单例、工厂、策略 │ ├── SOA服务化 │ └── 加外观、适配器 │ ├── 微服务Spring Cloud │ └── 加代理、责任链、桥接 │ └── 云原生K8s Service Mesh └── 加装饰器、代理、中介者5.2 23 种模式全景模式用途大白商城应用单例节省内存Spring Bean工厂方法创建对象模板选择抽象工厂家族创建数据源族建造者复杂对象Order 构建原型克隆对象深拷贝代理远程调用Feign适配器接口转换REST ↔ 业务装饰器功能增强缓存/日志外观统一接口API Gateway组合树形结构分类树桥接抽象分离JDBC享元共享对象标签/模板策略算法切换支付/优惠模板方法流程固定下单观察者事件通知6 个 Listener状态状态机订单 6 态命令操作封装撤销/重做中介者多对象协调事件总线迭代器统一遍历分页/树备忘录状态保存购物车访问者操作分离营销规则解释器自定义语言规则表达式责任链多步处理风控六、本篇小结 下篇预告6.1 本篇小结技术架构全链路 6 大模式协作微服务架构是设计模式的工业化Spring Cloud 全家桶是模式应用6.2 实战心法外观 适配器统一对外责任链 装饰器横切关注点代理 桥接远程/多数据源6.3 下篇预告第 51 篇【收官之作】大白话说Java设计模式 - 10 大反模式与避坑指南最后一篇是收官之作总结整个系列10 大反模式最常见的错误用法50 文章的总结脑图持续学习路径书单/项目/社区大白的最后寄语觉得对您有帮助麻烦点点关注啦您的关注是我创作的最大动力~