19_桥接模式

一、桥接相关类

package com.study.bridge

/**
 * 身份
 */
abstract class Identity {
    /**
     * 获取当前身份类型
     */
    abstract fun getIdentity(): String
}
package com.study.bridge

class BossIdentity : Identity() {
    override fun getIdentity(): String = "老板"
}
package com.study.bridge

class StudentIdentity : Identity() {
    override fun getIdentity(): String = "学生"
}
package com.study.bridge

/**
 * 抽象的手机
 */
abstract class Phone(var identity: Identity) {
    abstract fun usePhone()
}
package com.study.bridge

/**
 * 功能类型的手机
 */
class FunctionPhone(identity: Identity) : Phone(identity) {
    override fun usePhone() {
        println("${identity.getIdentity()}相机类型手机")
    }

}
package com.study.bridge

/**
 * 拍照类型的手机
 */
class CameraPhone(identity: Identity) : Phone(identity) {
    override fun usePhone() {
        println("${identity.getIdentity()}功能类型手机")
    }

}

二、主程序调用

package com.study.bridge

/**
 * 相同的手机对应不同的用户群体/相同用户群体使用不同的手机
 *
 * 例如:学生和老板两个群体,对手机都有着不同的需求。
 * 如果以功能和身份结合起来命名手机,那么Phone就会产生(m个身份*n个功能)的子类。
 * 这样很可能导致类爆炸,此时引入桥接模式则可以解决这个问题
 *
 * StudentCameraPhone、StudentFunctionPhone
 * BossCameraPhone、BossFunctionPhone
 *
 *  定义和类型
    将抽象部分和它的具体实现部分分离,使他们都可以独立的变化
    通过组合的方式建立两个类之间联系,而不是继承

    类型:结构型

    适用场景
    抽象和实现之间增加更多的灵活性
    一个类存在两个或多个独立变化的维度,且这两个(或多个)维度都需要独立进行扩展
    不希望使用继承,或因为多层继承导致系统类的个数剧增

    优点
    分离抽象部分及其具体实现部分
    提高了系统的可扩展性
    符合开闭原则
    符合合成复用原则

    缺点
    增加了系统的理解和设计难度
    需要正确的识别出系统中两个独立变化的维度
 *
 */
fun main() {
    val studentIdentity = StudentIdentity()
    val bossIdentity = BossIdentity()

    val studentCameraPhone = CameraPhone(studentIdentity)
    studentCameraPhone.usePhone()
    val bossCameraPhone = CameraPhone(bossIdentity)
    bossCameraPhone.usePhone()

    val studentFunctionPhone = FunctionPhone(studentIdentity)
    studentFunctionPhone.usePhone()
    val bossFunctionPhone = FunctionPhone(bossIdentity)
    bossFunctionPhone.usePhone()
}

三、运行结果

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值