2025/3/17
320
原型模式非常简单,用一句话既可概括:以一个已存在的对象作为原型,快速克隆产生出新的对象。一些对象的构造逻辑包含复杂的过程,比如I/O操作、网络通信、第三方交互等,通过原型模式可以跳过这些过程,高效的克隆出目标对象。
2025/4/27
73
单例模式是一种高频使用的设计模式,它保证对象只有一个。比如有一台打印机,我们需要为控制打印机写一个类,如果这个类能被随意new(),甲new出来一个,乙new出来一个,甲还没打印完,乙又开始打印,那就乱了套。所以打印对象必须唯一,只有一个对象与打印机通讯,当甲乙丙丁同时打印时,在同一个对象中实现排队逻辑。单例模式就像美国总统,美国总统只能存在一个,如果有多个,估计全世界人民都会比较高兴。
2025/4/14
214
观察者模式定义了对象之间一对多的依赖关系,当一个对象发生变化时,多个依赖它的对象都会收到通知。观察者模式也是一种通信范式,不光存在于软件开发中,在日常生活中也非常常见,比如拍卖会上的竞拍者观察拍卖师的报价后制定自己的出价策略,粉丝在微博上关注自己喜欢的明星后收到明星的动态推送等。因为观察者模式在开发中使用的非常频繁,大部分开发语言和框架均原生支持观察者模式,比如C#中的事件、QT中的信号槽等。
2025/3/12
344
工厂模式的核心目的是将对象的创建与使用分离,我们习惯于在构造函数中进行一系列对象的初始化甚至逻辑处理,如果仔细推敲,会发现其实并不符合常理。如果把汽车的发动机当作一个对象,我们向发动机传入设计图纸,然后发动机自己把自己生产了出来。是的,发动机自己生产了自己,是不是感觉有些怪异?其实现实生活中的场景更符合逻辑,把图纸送到发动机生产工厂,由工厂完成发动机的生产制造。在软件开发中,大多数简单对象,并不需要使用工厂,但当一个对象的构造过程相对复杂、易变时,就需要考虑使用工厂将对象的创建过程解耦了。