首页
学习
活动
专区
工具
TVP
发布

元闰子的邀请

专栏成员
22
文章
9447
阅读量
17
订阅数
【Go实现】实践GoF的23种设计模式:适配器模式
适配器模式(Adapter)是最常用的结构型模式之一,在现实生活中,适配器模式也是处处可见,比如电源插头转换器,它可以让英式的插头工作在中式的插座上。
元闰子
2023-12-10
1970
【Go实现】实践GoF的23种设计模式:备忘录模式
相对于代理模式、工厂模式等设计模式,备忘录模式(Memento)在我们日常开发中出镜率并不高,除了应用场景的限制之外,另一个原因,可能是备忘录模式 UML 结构的几个概念比较晦涩难懂,难以映射到代码实现中。比如 Originator(原发器)和 Caretaker(负责人),从字面上很难看出它们在模式中的职责。
元闰子
2023-11-26
1390
【Go实现】实践GoF的23种设计模式:命令模式
现在的软件系统往往是分层设计。在业务层执行一次请求时,我们很清楚请求的上下文,包括,请求是做什么的、参数有哪些、请求的接收者是谁、返回值是怎样的。相反,基础设施层并不需要完全清楚业务上下文,它只需知道请求的接收者是谁即可,否则就耦合过深了。
元闰子
2022-12-22
2530
二阶思维
事情往往不是你想象的那样,有时候,看似解决了问题,却在不经意间,引发了更严重的后果。帮助我们思考、决策、解决问题的最有效方法是,运用二阶思维。
元闰子
2022-11-20
3560
【Go实现】实践GoF的23种设计模式:代理模式
它是一个使用率非常高的设计模式,在现实生活中,也是很常见。比如,演唱会门票黄牛。假设你需要看一场演唱会,但官网上门票已经售罄,于是就当天到现场通过黄牛高价买了一张。在这个例子中,黄牛就相当于演唱会门票的代理,在正式渠道无法购买门票的情况下,你通过代理完成了该目标。
元闰子
2022-10-16
3200
【Go实现】实践GoF的23种设计模式:访问者模式
访问者模式的目的是,解耦数据结构和算法,使得系统能够在不改变现有代码结构的基础上,为对象新增一种新的操作。
元闰子
2022-10-06
2190
【Go实现】实践GoF的23种设计模式:迭代器模式
有时会遇到这样的需求,开发一个模块,用于保存对象;不能用简单的数组、列表,得是红黑树、跳表等较为复杂的数据结构;有时为了提升存储效率或持久化,还得将对象序列化;但必须给客户端提供一个易用的 API,允许方便地、多种方式地遍历对象,丝毫不察觉背后的数据结构有多复杂。
元闰子
2022-08-01
3300
【Go实现】实践GoF的23种设计模式:观察者模式
现在有 2 个服务,Service A 和 Service B,通过 REST 接口通信;Service A 在某个业务场景下调用 Service B 的接口完成一个计算密集型任务,假设接口为 http://service_b/api/v1/domain;该任务运行时间很长,但 Service A 不想一直阻塞在接口调用上。为了满足 Service A 的要求,通常有 2 种方案:
元闰子
2022-07-23
3400
深入理解 SQL 中的 Grouping Sets 语句
SQL 中 Group By 语句大家都很熟悉,根据指定的规则对数据进行分组,常常和聚合函数一起使用。
元闰子
2022-07-03
1.2K1
【Go实现】实践GoF的23种设计模式:装饰者模式
我们经常会遇到“给现有对象/模块新增功能”的场景,比如 http router 的开发场景下,除了最基础的路由功能之外,我们常常还会加上如日志、鉴权、流控等 middleware。如果你查看框架的源码,就会发现 middleware 功能的实现用的就是装饰者模式(Decorator Pattern)。
元闰子
2022-06-29
2380
【Go实现】实践GoF的23种设计模式:原型模式
原型模式(Prototype Pattern)主要解决对象复制的问题,它的核心就是 Clone() 方法,返回原型对象的复制品。
元闰子
2022-06-02
2640
【Go实现】实践GoF的23种设计模式:抽象工厂模式
上一篇我们介绍了工厂方法模式,本文,我们继续介绍它的兄弟,抽象工厂模式(Abstract Factory Pattern)。
元闰子
2022-05-29
3270
【Go实现】实践GoF的23种设计模式:工厂方法模式
工厂方法模式(Factory Method Pattern)跟上一篇讨论的建造者模式类似,都是将对象创建的逻辑封装起来,为使用者提供一个简单易用的对象创建接口。两者在应用场景上稍有区别,建造者模式常用于需要传递多个参数来进行实例化的场景;工厂方法模式常用于不指定对象具体类型的情况下创建对象的场景。
元闰子
2022-05-21
2830
【Go实现】实践GoF的23种设计模式:建造者模式
在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象。这种情况下,创建这个复杂对象就会变得很繁琐。对于 C++/Java 而言,最常见的表现就是构造函数有着长长的参数列表:
元闰子
2022-05-06
3280
从分层架构到微服务架构(五)之服务化架构
从本文开始,我们进入了《从分层架构到微服务架构》系列中分布式架构的介绍,本文要介绍的是服务化架构(Service-Based Architecture,SBA)。
元闰子
2022-04-08
6990
【Go实现】实践GoF的23种设计模式:单例模式
在程序设计中,有些对象通常只需要一个共享的实例,比如线程池、全局缓存、对象池等。实现共享实例最简单直接的方式就是全局变量。但是,使用全局变量会带来一些问题,比如:
元闰子
2022-04-05
2670
【Go实现】实践GoF的23种设计模式:SOLID原则
从1995年GoF提出23种设计模式到现在,25年过去了,设计模式依旧是软件领域的热门话题。设计模式通常被定义为:
元闰子
2022-03-14
4040
假如让你来设计SSL/TLS协议
说起网络通信协议,相信大家对 TCP 和 HTTP 都很熟悉,它们可以说是当今互联网通信的基石。但是,在网络安全方面,它们却是有着很大安全风险:
元闰子
2022-03-05
4940
实现DCI架构
在面向对象编程的理念里,应用程序是对现实世界的抽象,我们经常会将现实中的事物建模为编程语言中的类/对象(“是什么”),而事物的行为则建模为方法(“做什么”)。面向对象编程有三大基本特性(封装、继承/组合、多态)和五大基本原则(单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口分离原则),但知道这些还并不足以让我们设计出好的程序,于是很多方法论就涌现了出来。
元闰子
2022-02-27
4200
探索OS的内存管理原理
内存作为计算机系统的组成部分,跟开发人员的日常开发活动有着密切的联系,我们平时遇到的Segment Fault、OutOfMemory、Memory Leak、GC等都与它有关。本文所说的内存,指的是计算机系统中的主存(Main Memory),它位于存储金字塔中CPU缓存和磁盘之间,是程序运行不可或缺的一部分。
元闰子
2022-02-27
5710
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档