Design Pattern 23种经典设计模式源码详解

经典设计模式源码详解,用不同语言来实现,包括Java/JS/Python/TypeScript/Go等。结合实际场景,充分注释说明,每一行代码都经过检验,确保可靠。

设计模式是一个程序员进阶高级的必然选择,不懂设计模式,就像写文章不懂得层次,盖房子没有结构。只有充分懂得设计之道,才能真正设计出良好的软件和系统来。

每一种语言都有自己的特色,设计模式首推用Java语言来实现,因为Java相对最全面,也非常规整。

其他语言有自己的优势,并不需要像Java那么啰嗦就可以实现良好的设计模式。因此通过不同语言之间的对比,可以更好地理解各种语言的差异,真正理解编程之道。

详细请访问:https://github.com/microwind/design-pattern

设计模式结构图

设计模式例子

每一个例子都经过精心设计,提供UML设计图,作用说明以及创建步骤。

源码例子创建型

  • 工厂模式(Factory Pattern),由工厂类提供统一的创建对象的方法。Java|JavaScript|Python|TypeScript|Go

  • 抽象工厂模式(Abstract Factory Pattern),是一个超级工厂,用来创建其他工厂方法。Java|JavaScript|Python|TypeScript|Go

  • 原型模式(Prototype Pattern),利用clone()复制已有对象的实例。Java|JavaScript|Python|TypeScript|Go

  • 建造者模式(Builder Pattern),利用多个简单对象逐步构建一个复杂对象,类似建造房子。Java|JavaScript|Python|TypeScript|Go

  • 单例模式(Singleton Pattern),保证创建的类只有一个实例,并提供一个访问该实例的全局节点。Java|JavaScript|Python|TypeScript|Go

结构型

  • 适配器模式(Adapter Pattern),为两个不兼容的接口提供专门兼容方案。Java|JavaScript|Python|TypeScript|Go

  • 桥接模式(Bridge Pattern),将类拆分为抽象和实现两个独立的层次结构进行解耦。Java|JavaScript|Python|TypeScript|Go

  • 组合模式(Composite Pattern),依据树形结构来组合对象,用不同组件来构建某个部分或整体对象。Java|JavaScript|Python|TypeScript|Go

  • 装饰器模式(Decorator Pattern),将对象放入到一个特殊封装的对象中,赋予其新的能力。Java|JavaScript|Python|TypeScript|Go

  • 外观模式(Facade Pattern),给现有的系统添加一个高层接口,隐藏子系统的复杂性。Java|JavaScript|Python|TypeScript|Go

  • 享元模式(Flyweight Pattern),通过共享多个对象的相同状态,让有限的内存容量载入更多对象。Java|JavaScript|Python|TypeScript|Go

  • 代理模式(Proxy Pattern),用一个类来代理另一个类或几个类的功能。Java|JavaScript|Python|TypeScript|Go

  • 过滤器模式(Filter Pattern),使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来。Java|JavaScript|Python|TypeScript|Go

行为型

  • 策略模式(Strategy Pattern),将每一个算法策略封装到接口中,根据需要设定策略,使具体实现和策略解耦。Java|JavaScript|Python|TypeScript|Go

  • 观察者模式(Observer Pattern),当主题对象的状态发生改变时,所有依赖对象都得到通知并被自动更新。Java|JavaScript|Python|TypeScript|Go

  • 迭代器模式(Iterator Pattern),给数据对象构建一套按顺序访问集合对象元素的方式。Java|JavaScript|Python|TypeScript|Go

  • 模板方法模式(Template Method Pattern),定义了一个抽象公开类,包含基本的算法骨架,而将一些步骤延迟到子类中。Java|JavaScript|Python|TypeScript|Go

  • 责任链模式(Chain of Responsibility Pattern),为请求创建了一个接收者对象的链,请求沿着处理者链进行发送和处理。Java|JavaScript|Python|TypeScript|Go

  • 命令模式(Command Pattern),把请求以命令的形式包裹在对象中,并传给调用对象。Java|JavaScript|Python|TypeScript|Go

  • 备忘录模式(Memento Pattern),将对象的状态捕捉住,并以备忘录的形式存储起来,以便合适的时候还原。Java|JavaScript|Python|TypeScript|Go

  • 状态模式(State Pattern),类的行为是基于它的状态改变的,不同的状态下有不同的行为。Java|JavaScript|Python|TypeScript|Go

  • 访问者模式(Visitor Pattern),封装访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。Java|JavaScript|Python|TypeScript|Go

  • 中介者模式(Mediator Pattern),它用一个中介对象来封装一系列的动作,以让对象之间进行交流。Java|JavaScript|Python|TypeScript|Go

  • 解释器模式(Interpreter Pattern),实现了一个表达式接口,并能解释特定的上下文里面的变量和语句。Java|JavaScript|Python|TypeScript|Go

设计模式源码地址

详细请访问:https://github.com/microwind/design-pattern

详细请访问:https://github.com/microwind/design-pattern