mirror of
https://github.com/crazybber/go-pattern-examples.git
synced 2024-11-25 13:16:02 +03:00
add content to readme
This commit is contained in:
parent
2923818289
commit
dcce0d7feb
@ -1,10 +1,15 @@
|
|||||||
# Go语言设计模式示例集合(Go Patterns Examples)
|
# Go语言设计模式示例集合(Go Patterns Examples)
|
||||||
|
|
||||||
Go常用的、面向工程化和最佳实践的模式套路,包含常见的23种设计模式,重点是这里全部是例子、通俗易懂,每个模式,改一下名字就可以直接用在项目和工程中.
|
Go常用的、面向工程化和最佳实践的模式套路,包含常见的23种设计模式,重点是这里全部是例子、通俗易懂,每个模式,改一下名字就可以直接用在项目和工程中。
|
||||||
|
|
||||||
|
每一种设计模式都有其特定的应用场景和要解决的问题,了解模式的关键点就在于弄清这些目标场景和问题,千万不要纠结于:为什么这个模式叫这个名字,这个模式为啥要这样用?
|
||||||
|
|
||||||
|
记住:这些模式不是你总结的,也不是我的总结的,如果是你的写的,你可以按照自己的喜欢的感觉给这些套路取名字,让别人去费劲想。
|
||||||
|
|
||||||
## 姿势
|
## 姿势
|
||||||
|
|
||||||
+ 所谓模式就是套路,如功夫,招有定式
|
+ 所谓模式就是套路,如功夫,招有定式
|
||||||
|
+ 学习模式,就是学习套路,弄清楚套路要解决的目标场景,这很重要.
|
||||||
+ 这里就是以实际代码示例展示设计模式,通俗易懂
|
+ 这里就是以实际代码示例展示设计模式,通俗易懂
|
||||||
+ 除了常见的23种普适的设计模式,Go也有一些属于自己的模式
|
+ 除了常见的23种普适的设计模式,Go也有一些属于自己的模式
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
我认为用复合表述更准确一些,复合模式的要点在于设计复合类型,兼容多种有相关关系类型,使得外部可以使用的使用方式使用相同接口(往往可能需要传入不同的参数)访问对象或者对象集。
|
我认为用复合表述更准确一些,复合模式的要点在于设计复合类型,兼容多种有相关关系类型,使得外部可以使用的使用方式使用相同接口(往往可能需要传入不同的参数)访问对象或者对象集。
|
||||||
|
|
||||||
复合模式在内存中的数据结构逻辑上常常表达为一个树结构,用于统一叶子节点对象和非叶子节点对象的访问,很明显复合模式可用于与类别相关的问题处理,并且尤其擅长类别相似的问题的处理。
|
复合模式在内存中的数据结构逻辑上常常表达为一个多叉树结构,所以有时候更直接叫树模式,用于统一叶子节点对象和非叶子节点对象的访问,很明显复合模式可用于与类别相关的问题处理,并且尤其擅长类别相似的问题的处理。
|
||||||
|
|
||||||
所以反过来想,当遇到分类相关并且关系可以表达为<整体-局部>关系的,或者遇到可以用树状逻辑梳理和表达的问题时候,复合模式可能就是最佳的问题解决思路了
|
所以反过来想,当遇到分类相关并且关系可以表达为<整体-局部>关系的,或者遇到可以用树状逻辑梳理和表达的问题时候,复合模式可能就是最佳的问题解决思路了
|
||||||
|
|
||||||
@ -13,16 +13,16 @@
|
|||||||
符合模式中的核心重点是一个 :复合对象,这个复合对象,能同时代表叶子节点和非叶子节点的对接。
|
符合模式中的核心重点是一个 :复合对象,这个复合对象,能同时代表叶子节点和非叶子节点的对接。
|
||||||
|
|
||||||
|
|
||||||
现实生活中服务装供应商库存盘点中的衣物分类就是一个很好的例子,
|
现实生活中的出海码头的货运集装箱就是一个很好复合模式的例子,集装箱里面可以装很多包装箱,包装箱里面可以装具体的货物,不论是货还是集装箱本身,对于出海的货运公司来讲都是集装箱,而不是具体的一个类货物,所以的货物都通过大小集装箱复合成统一的集装箱,对货运公司提供统一的使用方式,如下图,整个集装箱构成一棵树.
|
||||||
|
|
||||||
- 服装
|
- 集装箱
|
||||||
- 男装
|
- 包装箱A
|
||||||
- 女装
|
- 货物B
|
||||||
- 上套裙
|
- 包装箱C
|
||||||
- 短吊带
|
- 货物D
|
||||||
- 鞋帽 --->f鞋帽,从最基础通用性上来讲,不分男女
|
|
||||||
|
|
||||||
![一个示例](../../images/Composite.png)
|
![一个示例](../../images/Composite.png)
|
||||||
|
|
||||||
|
叶子是在集装箱例子中就是具体的物品,它没有能力将其他物品复合进自身。
|
||||||
|
|
||||||
[设计模式之:组合模式(Composite)](https://www.cnblogs.com/dragonflyyi/p/5043144.html)
|
[设计模式之:组合模式(Composite)](https://www.cnblogs.com/dragonflyyi/p/5043144.html)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# 装饰模式
|
# 装饰模式
|
||||||
|
|
||||||
装饰模式就是比较简单了,就是在不改变原有对象和类型的情况下,对其进行装饰,扩展,以达到公共强化和扩展的目的。
|
装饰模式就是比较简单了,就是在不改变原有对象和类型的情况下,对其进行装饰,扩展,以达到公共强化和扩展的目的,装饰模式的目的是在原有功能或者能力的基础上提供额外的更多的能力和特性,这一点和代理模式、复合模式是有很大不同的,了解每一种模式,重点是要了解这个模式的最初的设计者应用场景和其解决目的,以便加以利用。
|
||||||
|
|
||||||
Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式。使用匿名组合,在装饰器中不必显式定义转调原对象方法。
|
Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式。使用匿名组合,在装饰器中不必显式定义转调原对象方法。
|
||||||
|
Loading…
Reference in New Issue
Block a user