乱用继承导致的类爆炸

简介: 摘要(Markdown格式):了解**复杂度守恒定律**,源于1984年,指出应用的复杂性无法消除,只能转移。在探究设计模式时,发现了**桥接模式**。桥接模式通过组合而非继承处理多维度变化,避免类爆炸问题。当图形颜色和类型变化时,原本的抽象类和实现类会导致大量类产生。通过桥接模式优化,将颜色和形状解耦,实现了更灵活的结构。

昨天学习设计模式,其中有一个桥接模式让我深刻;

今天中午有复盘一下;

首先说下复杂度守恒定律,这一观点主要被应用在交互设计领域。我们不得不面对的问题是,该由谁来为这一固有的复杂度埋单。打个比方,应该由软件开发工程师花费额外的时间来使软件变得更加简单好用,还是应该让用户自己去解决软件使用中可能存在的问题?

复杂度守恒定律由Larry Tesler于1984年提出,也称泰斯勒定律(Tesler’s Law)。复杂度守恒定律(Law of conservation of complexity)由Larry Tesler于1984年提出,也称泰斯勒定律(Tesler’s Law)。
根据复杂度守恒定律,每个应用程序都具有其内在的、无法简化的复杂度。无论在产品开发环节还是在用户与产品的交互环节,这一固有的复杂度都无法依照我们的意愿去除,只能设法调整、平衡。

桥接模式?,那是个啥” 心中突然蹦出这么一个想法。我心血来潮,去搜索

image-20240616180310518

再去菜鸟教程看看

image-20240616180351799

有一个图形的案列

image-20240616180458923

这时候心里念着”首先有一个图形的基类,然后开始继承走起 红色的圆形、 红色的矩形、 蓝色的圆形、蓝色的矩形。“ 没毛病,一个抽象类,四个实现类,搞定

代码写完,测一手。画出类图

img

    @Test
    void shape(){
   
   
        Shape blueCircle = new BlueCircle();
        Shape blueRectangle = new BlueRectangle();
        Shape redCircle = new RedCircle();
        Shape redRectangle = new RedRectangle();

        blueCircle.create();
        blueRectangle.create();
        redCircle.create();
        redRectangle.create();
    }

结果

蓝色の圆形
蓝色の长方形
红色の圆形
红色の长方形

感觉还可以,如果再加一种形状呢?

再加两个类不就行了? RedTriangle、BlueTriangle,

也还行,如果再这基础上再加一种绿颜色呢

再加三个类 GreenCircle、 GreenRectangle、GreenTriangle”

再加一个椭圆呢

这样就造成类爆炸了

UML中的聚合组合!

img

所以再仔细想想就可以优化代码

bridge1.png

这个就是组合和聚合的意思,同时他们与主体之间的关联关系的表达

相关文章
|
小程序 前端开发 容器
微信小程序隐藏右侧滚动条并可以滚动
微信小程序隐藏右侧滚动条并可以滚动
745 0
|
设计模式 SQL 安全
【编程进阶知识】Java单例模式深度解析:饿汉式与懒汉式实现技巧
本文深入解析了Java单例模式中的饿汉式和懒汉式实现方法,包括它们的特点、实现代码和适用场景。通过静态常量、枚举类、静态代码块等方式实现饿汉式,通过非线程安全、同步方法、同步代码块、双重检查锁定和静态内部类等方式实现懒汉式。文章还对比了各种实现方式的优缺点,帮助读者在实际项目中做出更好的设计决策。
361 0
|
算法 项目管理
「软件项目管理」一文详解软件项目进度计划
该文章深入讲解了软件项目进度计划的制定方法,包括关键路径法(CPM)的基本概念、ES/LS/EF/LF关系图的绘制、浮动时间的计算以及时间压缩和资源优化技术,并通过实例演示了如何有效管理项目时间。
|
Java 数据库 微服务
spring cloud总览和架构图
spring cloud总览和架构图
1296 0
spring cloud总览和架构图
|
消息中间件 传感器 运维
软件体系结构 - 架构风格(7)事件驱动架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(7)事件驱动架构风格
744 0
|
存储 缓存 负载均衡
图解一致性哈希算法,看这一篇就够了!
近段时间一直在总结分布式系统架构常见的算法。前面我们介绍过布隆过滤器算法。接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。
25956 64
图解一致性哈希算法,看这一篇就够了!
|
数据可视化 数据挖掘 关系型数据库
招聘信息数据分析及可视化|以51JOB为例进行
招聘信息数据分析及可视化|以51JOB为例进行
714 0
|
JavaScript 前端开发 安全
基于SpringBoot+Vue的学生考勤系统的设计与实现
基于SpringBoot+Vue的学生考勤系统的设计与实现
559 0
|
安全 前端开发 Java
Spring Security-全面详解(学习总结---从入门到深化)(上)
Spring Security是Spring项目组提供的安全服务框架,核心功能包 括认证和授权。它为系统提供了声明式安全访问控制功能,减少了 为系统安全而编写大量重复代码的工作。
19001 3
Spring Security-全面详解(学习总结---从入门到深化)(上)