KittyDaddy's blog KittyDaddy's blog
首页
  • 学习笔记

    • 《Java基础》
    • 《常用设计模式》
    • 《MYSQL》
    • 《GO语言》
    • 《Spring源码解读》
  • 微服务解决方案

    • 锁的演化
    • 简单限流方案
    • 海量数据切分
  • 中间件

    • Nginx
    • MQ
    • Redis
    • Keepalived
  • 面试记
  • 杂文
  • 开源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

老猫

万物皆系统
首页
  • 学习笔记

    • 《Java基础》
    • 《常用设计模式》
    • 《MYSQL》
    • 《GO语言》
    • 《Spring源码解读》
  • 微服务解决方案

    • 锁的演化
    • 简单限流方案
    • 海量数据切分
  • 中间件

    • Nginx
    • MQ
    • Redis
    • Keepalived
  • 面试记
  • 杂文
  • 开源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
全部分类
更多 6 杂文 11 架构 6 微服务解决方案 6 定时器 1 《MYSQL》笔记 3 《Java基础》笔记 14 《常用设计模式》笔记 11 《Spring源码解读》 1 面试记 1 《MQ》 2 《Go语言》 7 开源 3 《锁的演化》 6 《海量数据切分》 1 《Redis》 4 《Keepalived》 1 《Nginx》 9

不得不说,在很多业务中,这种模式用得真的很香

老猫 2024-04-24 《常用设计模式》笔记 策略模式

# 故事

“不能在写if else来拓展当前系统了,现在已经有三个支付场景了......”工位上,小猫看着电脑,挠着头。

就在刚刚,小猫接到了一个新需求,需要和客户公司打通资产,形成资产联动。说白了就是需要定制化对接客户公司的支付资产体系。除了这次接到的之外。前面其实已经对接了三家了。由于每家对接规范都不一样,历史对接的时候为了尽快上线,都是直接搞个else的新路由分支,然后去实现支付,退款。

在小猫看来,就是在堆屎山。牵一发而动全身的感觉真的很不好。由于本次的需求留有的时间还是相当充裕的,所以小猫下定决心,打算利用这次的拓展,将原来不合理的地方用上设计模式将其重构掉。

深思熟虑很久,小猫下定决心打算用“策略模式”重构一番。

阅读全文

真香定律!我用这种模式重构了第三方登录

老猫 2024-02-28 《常用设计模式》笔记 适配器模式策略模式

# 故事

办公室里,小猫托着腮帮对着电脑陷入了思考。就在刚刚,他接到了领导指派的一个任务,业务调整,登录方式要进行拓展。例如需要接入第三方的微信登录,企业微信授权登录等等。

原因大概是这样,现在大环境不好,原来面向B端企业员工的电商业务并不好做,新客拓展比较困难,业务想要有更好的起色着实比较困难,所以决策层决定要把登录的口子放开,原来支持手机密码登录以及手机验证码进行登录,现在为了更好地推广,需要支持微信扫码关注企业公众号后登录,企业微信,微博等等一些列的第三方登录模式。

说白了未来到底会有多少种登录方式不得而知,那么面对这样一个棘手的问题,小猫又该何去何从?

阅读全文

一个单例模式,没必要这么卷吧

老猫 2024-02-14 《常用设计模式》笔记 设计模式创建型设计模式

分享是最有效的学习方式。
博客:https://blog.ktdaddy.com/

老猫的设计模式专栏已经偷偷发车了。不甘愿做crud boy?看了好几遍的设计模式还记不住?那就不要刻意记了,跟上老猫的步伐,在一个个有趣的职场故事中领悟设计模式的精髓。还等什么?赶紧上车吧

如果把系统软件比喻成江湖的话,那么设计原则绝对是OO程序员的武功心法,而设计模式绝对是招式。光知道心法是没有用的,还是得配合招式。只有心法招式合二为一,遇到强敌(“坑爹系统”)才能见招拆招,百战百胜。

# 故事

之前让小猫梳理的业务流程以及代码流程基本已经梳理完毕【系统梳理大法&代码梳理大法】。从代码侧而言也搞清楚了系统臃肿的原因【违背设计原则】。小猫逐渐步入正轨,他决定从一些简单的业务场景入手,开始着手优化系统代码。那么什么样的业务代码,动了之后影响最小呢?小猫看了看,打算就从泛滥创建的线程池着手吧,他打算用单例模式做一次重构。

在小猫接手的系统中,线程池的创建基本是想在哪个类用多线程就在那个类中直接创建。所以基本上很多service服务类中都有创建线程池的影子。那么他又该如何应对呢?

# 写在前面

遇到上述小猫的这种情况,我们的思路是采用单例模式进行提取公共线程池执行器,然后根据不同的业务类型使用工厂模式进行分类管理。

接下来,我们就单例模式开始吧。

概要

阅读全文

但凡有点设计原则,系统也不会写成这样

老猫 2024-02-06 《常用设计模式》笔记 设计模式软件设计原则

# 故事

这段时间以来,小猫按照之前的系统梳理方案【系统梳理大法&代码梳理大法】一直在整理着文档。

系统中涉及的业务以及模型也基本了然于胸,但是这代码写的真的是...

小猫也终于知道了为什么每天都有客诉,为什么每天都要去调用curl语句去订正生产的数据,为什么每天都在Hotfix...

整理了一下,大概出于这些原因,业务流程复杂暂且不议,光从技术角度来看,整个代码体系臃肿不堪,出问题之后定位困难,后面接手的几任开发为了解决问题都是“曲线救国”,不从正面去解决问题,为了解决一时的客诉问题而去解决问题,于是定义了各种新的修复流程去解决问题,这么一来,软件系统“无序”总量一直在增加,整个系统体系其实在初版之后就已经在“腐烂”了,如此?且抛开运维稳定性不谈,就系统本身稳定性而言,能好?

所以那两次事故还真不能怪小猫【事故1,事故2】

整个系统,除了堆业务还是堆业务,但凡有点软件设计原则,系统也不会写成这样了。

阅读全文

忍不了,客户让我在一个接口里面兼容多种功能点 原创

老猫 2024-01-29 《常用设计模式》笔记 单一职责原则设计模式

# 故事

小猫的风波已经过去了,这几天,小猫在安安心心地撸着系统现状方案,准备着下次月会的分享。

这天,原本静谧而又和谐的办公室却被开放平台老六抱怨声打破了。

“不改,别给我打电话了!说几遍都没用。这是一个研发的底线.....”

没过一会,产品老汪担心老六对其"对脸开大",孙子似地提着杯咖啡找到了老六。老汪是明事理的产品经理,为人处事儿这方面没得说。

“这事儿,我也为难,兄弟,帮帮忙,来喝杯咖啡解解乏。我也知道这种客户很难搞,但是我们是乙方,没办法,这年头大环境摆在这里,赚钱不容易,大家互相体谅一下。”

老六接过老汪的咖啡,气呼呼地抿了一口。

阅读全文

迈开拯救烂怂代码的第一步,我是这么做的 原创

老猫 2024-01-23 《常用设计模式》笔记 uml

# 故事

这几天的小猫心情还不错,修完了"幂等事件的bug",填完了"缓存击穿的坑",前两天组长交代给他的“整理一份系统现状报告”任务也算是有了思路,阴霾终于散去。好像一切都朝着好的方向发展了。是的,也该过去了,毕竟这些事情折磨小猫都快个把月了。

这天,小猫提着两杯咖啡找到了产品经理,本来么,礼多人不怪,这不效果就来了么。

“......整个业务背景呢,其实也就是这样了,然后后面有啥其他问题,也欢迎随时问,知无不答”。产品老汪和小猫足足聊了一半个小时,唾沫星子横飞,似乎还有点意犹未尽。

“嗯嗯,谢谢了,汪哥,耽误你时间了。”

“没事儿,不用客气,不过提醒你一下,当前系统经过太多开发的手了,系统代码得好好看看,听说初版本的时候都是外包搞的。你懂得......”

“嗯嗯,好,太感谢了” 小猫连连点头,老汪的话倒是提醒了他。

内心开始嘀咕,“哎。看来搞定各种模型关系,业务背景也还是不行啊,面对现实吧,烂怂代码还是得梳理一下的,当前系统的接口定义、以及类的封装貌似都挺乱的......”

阅读全文

刚接手一个业务系统,我是这么熟悉的 原创

老猫 2024-01-20 《常用设计模式》笔记 uml

# 故事

接二连三地背锅让小猫的内心受到了前所未有的打击。这也是他职业生涯中的第一次。感兴趣的伙伴们如果想了解一下小猫怎么了,可以看一下“幂等事件”以及“缓存击穿事件”。

这天组长找小猫来到了一间会议室。

“在这么短的时间内发生了这么多的事故,我想也你心里也不好受,也不怪你,毕竟刚接手项目。以前项目中可能本身存在一定问题。正好轮到你头上,我希望你也不要灰心......”,组长在一边balabala。

小猫在一旁小鸡啄米似的点着头。紧张的内心缓和了许多,“听组长这语气,貌似不扣我绩效啊”,小猫心里寻思着。

“但是呢,事情是发生了,系统中估计还有其他的问题,无论是业务上的还是代码上的亦或是设计上的,然后我希望你最近可以花时间整理一下,然后输出一份项目文档分析。等到下次月会的时候一起分享一下当前系统的情况。”

小猫连连点头,心里琢磨“看来还是躲不过当众批斗这关啊,罢了罢了,可是,这样的一份文档该从哪个口子开始呢,到底该怎么写呢”

此时的小猫内心又开始不安起来。

阅读全文

接手了个项目,被if..else搞懵逼了

老猫 2023-12-22 《常用设计模式》笔记 策略模式工厂模式责任链模式

# 背景

领导:“这个项目,今后就给你维护了啊,仔细点。” 小猫:“好,没问题”。 可当满怀信心的小猫打开项目工程包翻看一些代码之后,瞬间懵逼没了信心。

阅读全文

java常用设计模式-工厂方法模式 原创

老猫 2020-07-12 《常用设计模式》笔记 Java设计模式工厂方法模式

之前介绍了简单工厂模式,我们也认识到简单模式的缺点其实也很明显,工厂类的职责相对过重,不易于扩展过于复杂的产品结构。所以我们现在来介绍一下工厂方法模式。工厂方法模式是指定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法模式其宗旨其实就是将类的实例化推迟到子类中进行。在工厂方法模式中用户只需要关心所需产品对应的工厂,无需关心创建细节。

接下来我们还是拿酒厂的例子来做代码演示。

阅读全文

java常用设计模式-简单工厂模式 原创

老猫 2020-07-04 《常用设计模式》笔记 Java设计模式简单工厂模式

在现实生活中,其实我们可以看到很多的工厂,大大小小的,从最最简单的的造酒厂到大型的代加工的富士康,这个其实就是工厂的演变以及进化。于是乎在我们Java世界里,其实工厂模式也可以进化演变。老猫研究了一段时间,并且总结分享给大家。

进化的流程大致是这样的:

简单工厂模式->工厂方法模式->抽象工厂模式。接下来,跟着老猫一个一个往下看,在此期间,老猫会举一些例子,供大家参考。

阅读全文

上一页

12

下一页

全部分类
更多 6 杂文 11 架构 6 微服务解决方案 6 定时器 1 《MYSQL》笔记 3 《Java基础》笔记 14 《常用设计模式》笔记 11 《Spring源码解读》 1 面试记 1 《MQ》 2 《Go语言》 7 开源 3 《锁的演化》 6 《海量数据切分》 1 《Redis》 4 《Keepalived》 1 《Nginx》 9
Theme by Vdoing | Copyright © 2020-2025 Kitty Daddy | License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式