1
- # Design Pattern 设计模式
1
+ # Design Pattern 23种经典设计模式源码详解
2
2
3
- 包括23种经典设计模式的源码例子 ,结合实际场景,充分注释说明,每一行代码都经过检验,确保可靠。
3
+ 23种经典设计模式 ,结合实际场景,源码详解 ,充分注释说明,每一行代码都经过检验,确保可靠。
4
4
5
5
用不同语言来实现,包括Java/JS/Python/TypeScript/Go等。
6
6
@@ -15,78 +15,78 @@ Implemented in different languages, including Java/JS/Python/TypeScript/Go, etc.
15
15
## 源码例子
16
16
17
17
### 创建型
18
- - 工厂模式(Factory Pattern),由工厂类提供统一的创建对象的方法。
18
+ - ** [ 工厂模式(Factory Pattern) ] ( ./factory-pattern ) ** ,由工厂类提供统一的创建对象的方法。
19
19
[ Java] ( ./factory-pattern/java ) | [ JavaScript] ( ./factory-pattern/js ) | [ Python] ( ./factory-pattern/python ) | [ TypeScript] ( ./factory-pattern/ts ) | [ Go] ( ./factory-pattern/go )
20
20
21
- - 抽象工厂模式(Abstract Factory Pattern),是一个超级工厂,用来创建其他工厂方法。
21
+ - ** [ 抽象工厂模式(Abstract Factory Pattern) ] ( ./abstract-factory ) ** ,是一个超级工厂,用来创建其他工厂方法。
22
22
[ Java] ( ./abstract-factory/java ) | [ JavaScript] ( ./abstract-factory/js ) | [ Python] ( ./abstract-factory ) | [ TypeScript] ( ./abstract-factory/ts ) | [ Go] ( ./abstract-factory/go )
23
23
24
- - 原型模式(Prototype Pattern),利用clone()复制已有对象的实例。
24
+ - ** [ 原型模式(Prototype Pattern) ] ( ./prototype-pattern ) ** ,利用clone()复制已有对象的实例。
25
25
[ Java] ( ./prototype-pattern/java ) | [ JavaScript] ( ./prototype-pattern/js ) | [ Python] ( ./prototype-pattern/python ) | [ TypeScript] ( ./prototype-pattern/ts ) | [ Go] ( ./prototype-pattern/go )
26
26
27
- - 建造者模式(Builder Pattern),利用多个简单对象逐步构建一个复杂对象,类似建造房子。
27
+ - ** [ 建造者模式(Builder Pattern) ] ( ./builder-pattern ) ** ,利用多个简单对象逐步构建一个复杂对象,类似建造房子。
28
28
[ Java] ( ./builder-pattern/java ) | [ JavaScript] ( ./builder-pattern/js ) | [ Python] ( ./builder-pattern/python ) | [ TypeScript] ( ./builder-pattern/ts ) | [ Go] ( ./builder-pattern/go )
29
29
30
- - 单例模式(Singleton Pattern),保证创建的类只有一个实例,并提供一个访问该实例的全局节点。
30
+ - ** [ 单例模式(Singleton Pattern) ] ( ./singleton-pattern ) ** ,保证创建的类只有一个实例,并提供一个访问该实例的全局节点。
31
31
[ Java] ( ./singleton-pattern/java ) | [ JavaScript] ( ./singleton-pattern/js ) | [ Python] ( ./singleton-pattern/python ) | [ TypeScript] ( ./singleton-pattern/ts ) | [ Go] ( ./singleton-pattern/go )
32
32
33
33
### 结构型
34
- - 适配器模式(Adapter Pattern),为两个不兼容的接口提供专门兼容方案。
34
+ - ** [ 适配器模式(Adapter Pattern) ] ( ./adapter-pattern ) ** ,为两个不兼容的接口提供专门兼容方案。
35
35
[ Java] ( ./adapter-pattern/java ) | [ JavaScript] ( ./adapter-pattern/js ) | [ Python] ( ./adapter-pattern/python ) | [ TypeScript] ( ./adapter-pattern/ts ) | [ Go] ( ./adapter-pattern/go )
36
36
37
- - 桥接模式(Bridge Pattern),将类拆分为抽象和实现两个独立的层次结构进行解耦。
37
+ - ** [ 桥接模式(Bridge Pattern) ] ( ./bridge-pattern ) ** ,将类拆分为抽象和实现两个独立的层次结构进行解耦。
38
38
[ Java] ( ./bridge-pattern/java ) | [ JavaScript] ( ./bridge-pattern/js ) | [ Python] ( ./bridge-pattern/python ) | [ TypeScript] ( ./bridge-pattern/ts ) | [ Go] ( ./bridge-pattern/go )
39
39
40
- - 组合模式(Composite Pattern),依据树形结构来组合对象,用不同组件来构建某个部分或整体对象。
40
+ - ** [ 组合模式(Composite Pattern) ] ( ./composite-pattern ) ** ,依据树形结构来组合对象,用不同组件来构建某个部分或整体对象。
41
41
[ Java] ( ./composite-pattern/java ) | [ JavaScript] ( ./composite-pattern/js ) | [ Python] ( ./composite-pattern/python ) | [ TypeScript] ( ./composite-pattern/ts ) | [ Go] ( ./composite-pattern/go )
42
42
43
- - 装饰器模式(Decorator Pattern),将对象放入到一个特殊封装的对象中,赋予其新的能力。
43
+ - ** [ 装饰器模式(Decorator Pattern) ] ( ./decorator-pattern ) ** ,将对象放入到一个特殊封装的对象中,赋予其新的能力。
44
44
[ Java] ( ./decorator-pattern/java ) | [ JavaScript] ( ./decorator-pattern/js ) | [ Python] ( ./decorator-pattern/python ) | [ TypeScript] ( ./decorator-pattern/ts ) | [ Go] ( ./decorator-pattern/go )
45
45
46
- - 外观模式(Facade Pattern),给现有的系统添加一个高层接口,隐藏子系统的复杂性。
46
+ - ** [ 外观模式(Facade Pattern) ] ( ./facade-pattern ) ** ,给现有的系统添加一个高层接口,隐藏子系统的复杂性。
47
47
[ Java] ( ./facade-pattern/java ) | [ JavaScript] ( ./facade-pattern/js ) | [ Python] ( ./facade-pattern/python ) | [ TypeScript] ( ./facade-pattern/ts ) | [ Go] ( ./facade-pattern/go )
48
48
49
- - 享元模式(Flyweight Pattern),通过共享多个对象的相同状态,让有限的内存容量载入更多对象。
49
+ - ** [ 享元模式(Flyweight Pattern) ] ( ./flyweight-pattern ) ** ,通过共享多个对象的相同状态,让有限的内存容量载入更多对象。
50
50
[ Java] ( ./flyweight-pattern/java ) | [ JavaScript] ( ./flyweight-pattern/js ) | [ Python] ( ./flyweight-pattern/python ) | [ TypeScript] ( ./flyweight-pattern/ts ) | [ Go] ( ./flyweight-pattern/go )
51
51
52
- - 代理模式(Proxy Pattern),用一个类来代理另一个类或几个类的功能。
52
+ - ** [ 代理模式(Proxy Pattern) ] ( ./proxy-pattern ) ** ,用一个类来代理另一个类或几个类的功能。
53
53
[ Java] ( ./proxy-pattern/java ) | [ JavaScript] ( ./proxy-pattern/js ) | [ Python] ( ./proxy-pattern/python ) | [ TypeScript] ( ./proxy-pattern/ts ) | [ Go] ( ./proxy-pattern/go )
54
54
55
- - 过滤器模式(Filter Pattern),使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来。
55
+ - ** [ 过滤器模式(Filter Pattern) ] ( ./filter-pattern ) ** ,使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来。
56
56
[ Java] ( ./filter-pattern/java ) | [ JavaScript] ( ./filter-pattern/js ) | [ Python] ( ./filter-pattern/python ) | [ TypeScript] ( ./filter-pattern/ts ) | [ Go] ( ./filter-pattern/go )
57
57
58
58
### 行为型
59
- - 策略模式(Strategy Pattern),将每一个算法策略封装到接口中,根据需要设定策略,使具体实现和策略解耦。
59
+ - ** [ 策略模式(Strategy Pattern) ] ( ./strategy-pattern ) ** ,将每一个算法策略封装到接口中,根据需要设定策略,使具体实现和策略解耦。
60
60
[ Java] ( ./strategy-pattern/java ) | [ JavaScript] ( ./strategy-pattern/js ) | [ Python] ( ./strategy-pattern/python ) | [ TypeScript] ( ./strategy-pattern/ts ) | [ Go] ( ./strategy-pattern/go )
61
61
62
- - 观察者模式(Observer Pattern),当主题对象的状态发生改变时,所有依赖对象都得到通知并被自动更新。
62
+ - ** [ 观察者模式(Observer Pattern) ] ( ./observer-pattern ) ** ,当主题对象的状态发生改变时,所有依赖对象都得到通知并被自动更新。
63
63
[ Java] ( ./observer-pattern/java ) | [ JavaScript] ( ./observer-pattern/js ) | [ Python] ( ./observer-pattern/python ) | [ TypeScript] ( ./observer-pattern/ts ) | [ Go] ( ./observer-pattern/go )
64
64
65
- - 迭代器模式(Iterator Pattern),给数据对象构建一套按顺序访问集合对象元素的方式。
65
+ - ** [ 迭代器模式(Iterator Pattern) ] ( ./iterator-pattern ) ** ,给数据对象构建一套按顺序访问集合对象元素的方式。
66
66
[ Java] ( ./iterator-pattern/java ) | [ JavaScript] ( ./iterator-pattern/js ) | [ Python] ( ./iterator-pattern/python ) | [ TypeScript] ( ./iterator-pattern/ts ) | [ Go] ( ./iterator-pattern/go )
67
67
68
- - 模板方法模式(Template Method Pattern),定义了一个抽象公开类,包含基本的算法骨架,而将一些步骤延迟到子类中。
68
+ - ** [ 模板方法模式(Template Method Pattern) ] ( ./template-pattern ) ** ,定义了一个抽象公开类,包含基本的算法骨架,而将一些步骤延迟到子类中。
69
69
[ Java] ( ./template-pattern/java ) | [ JavaScript] ( ./template-pattern/js ) | [ Python] ( ./template-pattern/python ) | [ TypeScript] ( ./template-pattern/ts ) | [ Go] ( ./template-pattern/go )
70
70
71
- - 责任链模式(Chain of Responsibility Pattern),为请求创建了一个接收者对象的链,请求沿着处理者链进行发送和处理。
71
+ - ** [ 责任链模式(Chain of Responsibility Pattern) ] ( ./chain-responsibility ) ** ,为请求创建了一个接收者对象的链,请求沿着处理者链进行发送和处理。
72
72
[ Java] ( ./chain-responsibility/java ) | [ JavaScript] ( ./chain-responsibility/js ) | [ Python] ( ./chain-responsibility/python ) | [ TypeScript] ( ./techain-responsibility/ts ) | [ Go] ( ./chain-responsibility/go )
73
73
74
- - 命令模式(Command Pattern),把请求以命令的形式包裹在对象中,并传给调用对象。
74
+ - ** [ 命令模式(Command Pattern) ] ( ./command-pattern ) ** ,把请求以命令的形式包裹在对象中,并传给调用对象。
75
75
[ Java] ( ./command-pattern/java ) | [ JavaScript] ( ./command-pattern/js ) | [ Python] ( ./command-pattern/python ) | [ TypeScript] ( ./command-pattern/ts ) | [ Go] ( ./command-pattern/go )
76
76
77
- - 备忘录模式(Memento Pattern),将对象的状态捕捉住,并以备忘录的形式存储起来,以便合适的时候还原。
77
+ - ** [ 备忘录模式(Memento Pattern) ] ( ./memento-pattern ) ** ,将对象的状态捕捉住,并以备忘录的形式存储起来,以便合适的时候还原。
78
78
[ Java] ( ./memento-pattern/java ) | [ JavaScript] ( ./memento-pattern/js ) | [ Python] ( ./memento-pattern/python ) | [ TypeScript] ( ./memento-pattern/ts ) | [ Go] ( ./memento-pattern/go )
79
79
80
- - 状态模式(State Pattern),类的行为是基于它的状态改变的,不同的状态下有不同的行为。
80
+ - ** [ 状态模式(State Pattern) ] ( ./state-pattern ) ** ,类的行为是基于它的状态改变的,不同的状态下有不同的行为。
81
81
[ Java] ( ./state-pattern/java ) | [ JavaScript] ( ./state-pattern/js ) | [ Python] ( ./state-pattern/python ) | [ TypeScript] ( ./state-pattern/ts ) | [ Go] ( ./state-pattern/go )
82
82
83
- - 访问者模式(Visitor Pattern),封装访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。
83
+ - ** [ 访问者模式(Visitor Pattern) ] ( ./visitor-pattern ) ** ,封装访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。
84
84
[ Java] ( ./visitor-pattern/java ) | [ JavaScript] ( ./visitor-pattern/js ) | [ Python] ( ./visitor-pattern/python ) | [ TypeScript] ( ./visitor-pattern/ts ) | [ Go] ( ./visitor-pattern/go )
85
85
86
- - 中介者模式(Mediator Pattern),它用一个中介对象来封装一系列的动作,以让对象之间进行交流。
86
+ - ** [ 中介者模式(Mediator Pattern) ] ( ./mediator-pattern ) ** ,它用一个中介对象来封装一系列的动作,以让对象之间进行交流。
87
87
[ Java] ( ./mediator-pattern/java ) | [ JavaScript] ( ./mediator-pattern/js ) | [ Python] ( ./mediator-pattern/python ) | [ TypeScript] ( ./mediator-pattern/ts ) | [ Go] ( ./mediator-pattern/go )
88
88
89
- - 解释器模式(Interpreter Pattern),实现了一个表达式接口,并能解释特定的上下文里面的变量和语句。
89
+ - ** [ 解释器模式(Interpreter Pattern) ] ( ./interpreter-pattern ) ** ,实现了一个表达式接口,并能解释特定的上下文里面的变量和语句。
90
90
[ Java] ( ./interpreter-pattern/java ) | [ JavaScript] ( ./interpreter-pattern/js ) | [ Python] ( ./interpreter-pattern/python ) | [ TypeScript] ( ./interpreter-pattern/ts ) | [ Go] ( ./interpreter-pattern/go )
91
91
92
92
### 设计思想
@@ -95,5 +95,4 @@ Implemented in different languages, including Java/JS/Python/TypeScript/Go, etc.
95
95
- MVVM [ 演示例子] ( ./mvx/mvvm )
96
96
- OOP [ 演示例子] ( ./oop )
97
97
98
-
99
98
### [ 查看全部源码] ( https://microwind.github.io/design-pattern/ )
0 commit comments