让代码变美的第三天 - 简单工厂模式

Java重构的4大魔法:如何让团队代码“自动变美”? 🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀。 阅读详情

丑陋的模样

    public void sendApple() {
        Apple apple = new Apple();

        // 洗苹果 + 切苹果
        apple.wash();
        apple.cut();

        // 使用苹果:苹果送人
        sendPeople(apple);
    }

    public void eatApple() {
        Apple apple = new Apple();

        // 洗苹果 + 切苹果
        apple.wash();
        apple.cut();

        // 使用苹果:吃苹果
        eatPeople(apple);
    }

    public void eatPineapple() {
        Pineapple apple = new Pineapple();

        // 洗菠萝 + 切菠萝
        apple.cut();

        // 使用菠萝:吃菠萝
        eat(apple);
    }
  • 上面代码,两次使用苹果代码有部分重叠,代码冗余。
  • 虽然新增一种水果(荔枝)不会破坏开闭原则,但是代码过于分散,不便于管理、维护。

变美步骤

第一步 - 基本预期

思考:这种产品(苹果、菠萝)在使用上会不会很多(比如上面苹果使用了2次,菠萝使用了一次)?这类产品将来会不会新增?,比如:香蕉、荔枝…
如果使用的地方很多,而且将来还会不断新增,那么重构一下还是比较好的。

第二步 - 梳理核心逻辑

使用这类产品的时候是不是总是需要创建、初始化。比如;一个产品初始化的东西基本固定,比如苹果一定要先洗,再切,然后再能端出来卖。

第三步 - 重构

给这个产品抽象出一个父类,比如水果

public interface Fruit {
}
public class Apple implements Fruit {
    public void eat() {
        System.out.println("吃苹果");
    }
}
public class Pineapple implements Fruit {
    public void eat() {
        System.out.println("吃菠萝");
    }
}

定义产品工厂,把每个产品的定义+初始化的动作都完成之后,形成一个可使用的产品再交出去

    public static Fruit getFruit(String name) {
        if ("苹果".equals(name)) {
            Apple apple = new Apple();
            // 洗苹果 + 切苹果
            // todo other init
            return apple;
        } else if ("菠萝".equals(name)) {
            Pineapple pineapple = new Pineapple();
            // 切菠萝
            // todo other init
            return pineapple;
        } else {
            throw new RuntimeException("没有找到该水果");
        }
    }
  • 将来新增初始化动作,或者想把菠萝换成“黑凤梨”也不用到处去改之前使用的地方

使用

    public void sendApple() {
        Fruit apple = FruitFacory.getFruit("苹果");
        sendPeople(apple);
    }

    public void eatApple() {
        Fruit apple = FruitFacory.getFruit("苹果");
        eatPeople(apple);
    }

    public void eatPineapple() {
        Fruit pineapple = FruitFacory.getFruit("菠萝");
        eat(apple);
    }
  • 使用的时候不用管初始化动作了,直接拿来就是可以用的产品

破坏了开放封闭原则

确实是破坏了开放封闭原则,但是大多数业务代码中,我们新增一个产品的时候,大概率也需要改代码的,无非是改使用的地方,还是改工厂里面的【if else】,所以问题不大,但是这样改造之后,逻辑收敛,并且优化了重复的代码(初始化过程),对于管理维护来说还是比较划算的。
一般来说简单工厂是够用的,如果实在接受不了破坏了开闭原则,可以上【工厂方法模式】,但是它也有一些优缺点,如下:
优点:重复代码可以去掉,并且也满足开闭原则
缺点:代码变得很臃肿,未来新增产品的同时还会额外新增一个工厂,代码量变多了,同类产品没有一个地方进行统一管理(可读性、可维护性略差)

【C++动态规划】2919. 使数组变美的最小增量运算数|2030 给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和一个整数 k 。 你可以执行下述 递增 运算 任意 次(可以是 0 次): 从范围 [0, n - 1] 中选择一个下标 i ,并将 nums[i] 的值加 1 。 如果数组中任何长度 大于或等于 3 的子数组,其 最大 元素都大于或等于 k ,则认为数组是一个 美丽数组 。 以整数形式返回使数组变为 美丽数组 需要执行的 最小 递增运算数。 子数组是数组中的一个连续 非空 元素序列。 示例 1: 输入:nums = [2,3,0,0,2], 阅读详情

相关推荐

STM32G070xx将Flash页分块方式存储,固定数据块存储,实现一次擦除多次写入

本例程使用STM32G070xx芯片,Flash大小128KB,Flash每页(2048字节)写满后再擦除。操作存储区分为64块,每块32字节,即写满64次擦除一次;标定存储区分为16块,每块128字节,即写满16次擦除一次,每个存储区的块都有各自的头部标记

RaphaelCeo的博客 1544

如何把丑的代码变美

这两个改进示例显示了如何通过使用Python的语言特性(如条件表达式和内置函数)来简化代码。这种重构不仅提高了代码的可读性和维护性,还能使代码更加符合Python的编程风格。在实际开发中,理解并运用这些技巧可以帮助开发者编写更高效、易于理解的代码。

少说,多做。 7113

第三篇:学习InternVL2.0(探讨代码之训练模块版)

InternVL2的训练模块

qq_69051120的博客 1244

让代码变美的第四天 - 工厂方法模式

日常重构代码

帅东's Blog 511

Scratch(四十一):升级版垃圾分类

哈喽,大家好!之前给大家展示过“Scratch(二十四):垃圾分类”。今天呢,给大家展示的Scratch是`升级版垃圾分类`。接下来,我们一起看一下效果吧。

我可以很大侠的博客 6864

Matplotlib图片尺寸调整全攻略:从figsize到savefig的实战技巧

在数据可视化与科学计算中,图形尺寸控制是影响图表可读性与专业度的基础环节。其核心原理在于协调逻辑尺寸(英寸)与物理输出(像素)的映射关系,这直接决定了信息呈现的清晰度与布局合理性。从技术价值看,精准的尺寸控制能提升图表在不同媒介(如学术论文、报告、网页)中的适配性,避免显示不全、模糊失真等常见问题。在应用场景上,无论是Jupyter Notebook中的交互探索、自动化报告的批量生成,还是满足严格出版要求的插图制作,都需要掌握对应的尺寸调整策略。本文聚焦于matplotlib中的figsize参数、rcPa

weixin_30899023的博客 328

vscode如何找letax模板_一直努力却找不到变美思路?韩国新一代「整容模板」,教你如何提高美商、科学变美!...

不知道大家有没有关注最近热议的“新一代韩国整容模板”?韩国作为整容大国,基本上每隔一段时间都会有审美喜好的改变。这次,几位被奉为“新一代整容模板”的小仙女,分别是高允真、洪秀珠、宋智英▼乍一看,这三位的长相都非常符合当下高级简约的审美潮流~看脸型,都是非常标准的心形脸或者鹅蛋脸。脸部线条十分流畅平滑,没有突兀的凹陷或隆起▼全脸最宽的地方也都集中在颧骨位置。往下的脸型内收,给人一种温婉含蓄的美▼但是...

weixin_39561577的博客 237

声发射传感器的工作原理是什么?

介绍声发射传感器的工作原理。

qq_39948394的博客 9246

让代码变美的第一天 - 观察者模式

日常重构代码

帅东's Blog 6万+

【ChatGPT实战案例】ChatGPT如何帮助产品经理高效工作?

1. 产品经理主要工作方向, 2. 具体工作中,向ChatGPT提问参考

weixin_62909516的博客 1899

【DRAM存储器五十四】LPDDR5介绍--PHY简介和LPDDR5训练流程

简述LPDDR5 PHY的基本功能和训练流程简介

highman110的博客 907

让代码变美的第二天 - 策略模式

思考:这个功能,这个方法改动到底是不是很频繁,新增的判断逻辑(if else)将来会不会很频繁。如果当前功能不光有不同策略处理流程,还有共同的处理流程,那么可以把不同策略处理流程抽取出来,使用策略模式进行优化,共同的部分不在本文讨论范围内。判断当前功能是不是都是由一个策略值,来决定后面整体流程,并且每个流程都不太相同,这样容易想到可以使用策略模式来进行优化。给所有策略对应的处理流抽象成一个方法,取个名字,比如买水果。定义每个策略对应处理流程,比如买苹果、买香蕉。给策略进行定义,比如水果场景。

帅东's Blog 268

某东x-api-eid-token风控参数分析与破解

x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。

zhouzhou_98的博客 1551

终极JavaScript代码美化指南:让源码瞬间变美✨

还在为网站上单调的代码块而烦恼吗?想要让你的技术博客或文档看起来更专业吗?**JavaScript代码美化器**就是你的完美解决方案!这个轻量级、易用的工具能够自动为HTML页面中的源代码片段添加语法高亮,让代码阅读体验大幅提升。🚀 ## 🤔 为什么需要代码美化? 在技术文档、博客文章或教学材料中,代码的可读性至关重要。传统的纯文本代码块不仅单调,还容易让读者失去焦点。JavaScript

gitblog_00120的博客 627

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Prettier Plugin for TailwindCSS:让你的TailwindCSS代码瞬间变美

在前端开发中,代码的可读性和一致性至关重要。当使用TailwindCSS时,面对满屏的类名,开发者往往会遇到代码混乱、难以维护的问题。prettier-plugin-tailwindcss正是为了解决这一问题而生的Prettier插件,它能够自动按照最佳实践对TailwindCSS类名进行排序,让你的代码从混乱变为有序。 ## 项目简介 prettier-plugin-tailwindcss是

gitblog_00429的博客 731

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode 2919 使数组变美的最小增量运算数

dp[i]:表示将数组nums的前i个元素变成美丽数组所需的最小操作次数。通过动态规划,我们可以高效地解决这个问题。动态规划的关键在于:定义合适的状态dp[i]。找到状态转移方程。初始化边界条件。返回最终结果。希望这篇博客能帮助你更好地理解这个问题的解法!如果你有任何疑问或需要进一步的解释,欢迎留言讨论。

qq_64604732的博客 808

按下去的效果_最全的5个护肤方法,是变美护肤的第一步,比天天敷面膜效果更好...

魔镜魔镜,我想变美变美变美。嘿,你不是白雪公主的后妈,当然不会有魔镜啦!想变美,就得靠自己!变美第一步靠的是正确护肤,分清5种肤质,效果比天天敷面膜更好!变美1:认清自己的肤质5种肤质:干性皮肤、油性皮肤、中性皮肤、敏感皮肤、混合性皮肤。变美2:不同肤质的护理要点最简单的皮肤保养,就是从分区护理开始,不同肤质的护理要点都各有不同,以下这些肤质的护理要点请注意。变美3:正确的护肤步骤最全最正确的护肤...

weixin_39634898的博客 76

卖出总数的一半又少8个_8个让你变美的小技巧,做到一半以上的都是女神!

有智有料有格调点击上方△蓝字可关注智大叔来源 | 智大叔(ID:Zdashu168)爱美之心,人皆有之。尤其对于女孩子来说,特别在意自己的外貌,希望自己变得美美的。出门前总会对着镜子左看右看,衣服换了一套又一套,直到自己满意了才会出门。其实,想要变美,不仅是靠化妆品或者衣服这些外在的物质,还要靠自身养成良好的习惯。以下8个变美的小技巧,看看你能做到几个?1多喝水多喝水对身体的健康确实有利...

weixin_35992880的博客 161

【生活】那个为你变美的女孩

今日与一久未谋面的学妹重拾联系,得知她与纠缠数载的男友已经分开。这个曾经的男友是我大学的同学,也是经由他我才认识的学妹。他们的故事充满了戏剧性,让人唏嘘。

非典型程序媛 1017

<h1>[特殊字符] 7天爆款必看!2025初春变美攻略,手把手教你从护肤到穿搭稳赢流量!</h1>

【代码】<h1>[特殊字符] 7天爆款必看!2025初春变美攻略,手把手教你从护肤到穿搭稳赢流量!</h1>

yylw_的博客 152

有什么事情坚持下来,整个人都会变美?

坚持做一些事情确实可以让我们的外貌和气质得到提升,从而让人感到更美丽。以下是一些能够帮助你变美的建议,这些都是根据搜索结果中提供的信息整理出来的。

2401_86436163的博客 474

告别裁剪烦恼:smartcrop.js如何让图片自动「变美」

在当今视觉驱动的数字世界中,图片裁剪往往是一个耗时且需要专业审美的过程。无论是社交媒体分享、网站设计还是移动应用开发,如何快速找到图片的最佳裁剪区域一直是困扰设计师和开发者的难题。smartcrop.js作为一款强大的内容感知图片裁剪工具,通过智能算法自动识别图片中的重要区域,让图片裁剪从此告别繁琐,轻松实现专业级效果。 ## 什么是smartcrop.js? smartcrop.js是一个基

gitblog_00986的博客 951

推荐项目:VideoBeautify - 让你的视频瞬间变美!

推荐项目:VideoBeautify - 让你的视频瞬间变美! VideoBeautifyWith this APP, you can do all kinds of professional optimising and beautifying to your videos项目地址:https://gitcode.com/gh_mirrors/vi/VideoBeautify 1、项目介绍 V...

gitblog_00051的博客 550

能让女生变美的十件事

1.读书   读书可以使人修心养性。读书是要静的,练气功也是要静的。读书就象在练气功,读书的时候你身心的气流、神韵就会随着书的韵律在飘游、流动。只要书是美丽的,“她”就会把你锻炼得美丽。人的美丽贵在内在气质的美丽。读书可以提高你的内在气质,读书可以使你美丽!这是浅易默化的,也是充满神奇的!所以读书是使你变得更美丽的第一大秘籍。   2.跑步   美人一般都好静,不喜欢运动。就是懒、怕吃苦。而人...

jiav_net的专栏 155

CSS3:网页变美指南

使用唯一目的:让网页美观一致

weixin_74889578的博客 1889

CSS学习——网页的变美指南

在使用外部样式表的情况下,可以通过改变一个文件来改变整个站点的外观,每个页面使用<link>标签链接到样式表。4.伪对象方式(如果有父级塌陷,并且同级元素也受到了影响,还可以使用伪对象方式处理,为父级标签添加伪类after,设置空的内容,并且使用clear:both;如果把盒子模型看作是一个生活中的快递,那么内容部分等同于你买的实物,内边距等同于快递盒子中的泡沫,边框等同于快递盒子,外边距等同于两个快递盒子之间的距离。标签选择器,选择的是页面上所有的这种类型的标签,经常描述的是“共性”,无法描述”个性“

Wangsian的博客 1109
上一篇: 让代码变美的第二天 - 策略模式
下一篇: 让代码变美的第四天 - 工厂方法模式
帅东
博客等级 码龄11年 676粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值