SpringCloudAlibaba-基础
参考文献
SpringCloud Alibaba 从入门到精通
SpringCloud Alibaba
SpringCloud版本
SpringCloud Alibaba与SpringCloud
Spring Cloud 第一代
状态
SpringCloud Alibaba
状态
Eureka
2.0孵化失败
Nacos Discovery
性能强劲,感知更快
Ribbon
进入维护状态,新标准已经形成spring-cloud-loadbalancer
Hystrix/Hystrix Dashboard/Turbine
进入维护状态
Sentinel
可视化配置,上手更简单
Zuul
进入维护状态
Spring Cloud Gateway
性能是Zuul的1.6倍
Spring Cloud Config
搭建复杂,约定多,设计繁重,没有界面
Nacos Config
搭建简单,有可视化界面
SpringCloud Alibaba重要组件
服务发现以及配置管理Nacos
负载均衡Ribbon
声明式HTTP客户端Feign
服务容错Sentin ...
设计模式-行为型-模版方法模式(Template Method)
参考文献
https://refactoringguru.cn/design-patterns/template-method
https://www.oodesign.com/template-method-pattern
模版方法模式
模板方法使用子类重写的抽象操作在基类中定义算法以提供具体行为.
定义操作中算法的骨架,将某些步骤推迟到子类中.
模板方法允许子类重新定义算法的某些步骤,而不让它们改变算法的结构.
模板方法模式建议将算法分解为一系列步骤, 然后将这些步骤改写为方法, 最后在 “模板方法” 中依次调用这些方法. 步骤可以是 抽象的, 也可以有一些默认的实现. 为了能够使用算法, 客户端需要自行提供子类并实现所有的抽象步骤. 如有必要还需重写一些步骤 (但这一步中不包括模板方法自身).
组件
AbstractClass(抽象类): 定义具体子类定义的抽象基元操作以实现算法的步骤.
实现定义算法骨架的模板方法.模板方法调用原始操作以及 AbstractClass 或其他对象中定义的操作
ConcreteClass(具体类): 实现原始操作以执行 ...
设计模式-行为型-空对象模式(Null Object)
参考文献
https://www.oodesign.com/null-object-pattern
https://java-design-patterns.com/patterns/null-object/
空对象模式
它用于处理对象引用为空时的情况.
该模式的目标是消除对空引用的显式检查,从而提高代码可读性和可维护性.
组件
AbstractClass: 定义具体实现必须定义的抽象基元操作.
RealClass: AbstractClass的实际实现,执行一些实际操作
NullClass: 不执行任何抽象类操作的实现,以便向客户端提供非空对象
Client: 客户端获取抽象类的实现并使用它.它并不真正关心实现是空对象还是真实对象,因为它们都以相同的方式使用
实现方式
定义一个共同的接口或抽象类,其中包含实际对象和空对象的共同方法.
创建一个实际对象类,实现共同接口,并提供具体的实现逻辑.
创建一个空对象类,也实现共同接口,但在方法中提供空实现.
在需要使用对象的地方,使用空对象作为默认值,而不是使用 null.
使用场景
避免在代码中频繁进行 null 引用的检查 ...
设计模式-行为型-访问者模式(Visitor)
参考文献
https://java-design-patterns.com/patterns/visitor/
https://www.oodesign.com/visitor-pattern
https://refactoringguru.cn/design-patterns/visitor
访问者模式
表示要对对象结构的元素执行的操作
Visitor允许您定义新操作,而无需更改其操作的元素的类
组件
Visitor: 这是一个接口或抽象类,用于声明所有类型的可访问类的访问操作.通常操作的名称是相同的,并且操作通过方法签名来区分:输入对象类型决定调用哪个方法.
ConcreteVisitor: 对于每种类型的访问者,必须实现在抽象访问者中声明的所有访问方法.每个访客将负责不同的操作.当定义一个新的访问者时,它必须被传递到对象结构.
Visitable : 是声明接受操作的抽象.这是访问者对象能够“访问”对象的入口点.集合中的每个对象都应该实现此抽象,以便能够被访问.
ConcreteVisitable: 这些类实现 Visitable 接口或类并定义接受操作.使用acce ...
设计模式-创建型-单例模式(Singleton)
参考文献
https://java-design-patterns.com/patterns/singleton/
https://www.oodesign.com/singleton-pattern
https://refactoringguru.cn/design-patterns/singleton
单例模式
保证一个类只有一个实例,并提供一个访问该实例的全局节点.
组件
在单例模式中,只有Singleton这一个角色.
Singleton角色中有一个返回唯一实例的static方法.该方法总是返回同一个实例.
实现方式
在类中添加一个私有静态成员变量用于保存单例实例.
声明一个公有静态构建方法用于获取单例实例.
在静态方法中实现"延迟初始化". 该方法会在首次被调用时创建一个新对象, 并将其存储在静态成员变量中. 此后该方法每次被调用时都返回该实例.
将类的构造函数设为私有. 类的静态方法仍能调用构造函数, 但是其他对象不能调用.
检查客户端代码, 将对单例的构造函数的调用替换为对其静态构建方法的调用.
具体实现
懒汉式
12345678910 ...
设计模式-创建型-原型模式(Prototype)
参考文献
https://www.oodesign.com/prototype-pattern
https://refactoringguru.cn/design-patterns/prototype
https://java-design-patterns.com/patterns/prototype/
原型模式
使用原型实例指定要创建的对象类型,并通过复制此原型来创建新对象.
通过复制生成实例
组件
Prototype : 负责定义用于复制现有实例来生成新实例的方法.
ConcretePrototype : 负责实现复制现有实例并生产新实例的方法.
Client : 负责使用复制实例的方法生产新的实例
123456789101112131415161718public interface Prototype { public abstract Object clone ();}public class ConcretePrototype implements Prototype { public Object clone() { ...
设计模式-创建型-对象池模式(ObjectPool)
参考文献
https://www.oodesign.com/object-pool-pattern
https://java-design-patterns.com/patterns/object-pool/
对象池模式
重用和共享创建成本高昂的对象。
当客户端请求可重用对象时,池将执行以下操作:
搜索可用的可重用对象,如果找到,它将返回给客户端。
如果没有找到可重用对象,那么它会尝试创建一个新对象。如果此操作成功,新的可重用对象将返回给客户端。
如果池无法创建新的可重用对象,则池将等待,直到释放可重用对象
组件
Reusable(可重复使用的资源) :包装有限的资源,将由多个客户端在有限的时间内共享。
Client : 使用可重用类型的实例
ReusablePool: 管理供客户端使用的可重用对象,创建和管理对象池
实现注意事项
Limited number of resources in the pool
内资源数量有限
Handling situations when creating a new resource fails
创建新 ...
设计模式-创建型-工厂方法模式(FactoryMethod)
参考文献
Java设计模式精讲 Debug方式+内存分析
<<深入设计模式>>
https://refactoringguru.cn/design-patterns/factory-method
https://www.oodesign.com/factory-method-pattern
工厂方法模式
定义一个用于创建对象的接口,但让子类决定实例化哪个类
通过通用接口引用新创建的对象
工厂方法模式通过定义一个工厂接口及其下属的多个具体工厂类,每个具体工厂类负责创建一种特定类型的对象.客户端通过调用工厂接口来创建对象,具体使用哪个具体工厂类由客户端决定.工厂方法模式将对象的创建延迟到具体工厂类中,使得工厂类成为了对象的抽象创建者.
组件
**产品(Product Interface)**定义工厂方法创建的对象的接口
**具体产品(Concrete Products Class)**是产品接口的不同实现.
创建者Creator(也称为Factory,因为它创建Product对象)声明方法FactoryMethod,该方法返回Product 对象 ...
设计模式-创建型-建造者模式(Builder)
参考文献
https://www.oodesign.com/builder-pattern
https://refactoringguru.cn/design-patterns/builder
建造者模式
定义一个实例来创建对象,但让子类决定实例化哪个类
通过通用接口引用新创建的对象
组装复杂的实例
组件
Product: 正在构建的复杂对象
Builder(建造者) : 指定用于创建 Product 对象的各个部分的抽象接口
ConcreteBuilder(具体建造者) : 通过实现 Builder 接口来构建和组合产品的各个部分.它定义并跟踪它创建的表示,并提供用于保存产品的界面
Director(监工) : 类使用 Builder 接口构造复杂对象
Client(使用者)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798 ...
设计模式-创建型-抽象工厂模式(AbstractFactory)
参考文献
抽象工厂模式
抽象工厂提供了用于创建一系列相关对象的接口,而无需显式指定它们的类.
抽象工厂模式通过定义抽象工厂接口及其下属的多个产品接口和多个产品族实现类,每个产品族实现类负责创建一组相关的产品.客户端通过调用抽象工厂接口来创建产品,具体使用哪个产品族实现类由客户端决定.抽象工厂模式将产品的创建延迟到具体产品族实现类中,使得产品的创建与使用相互独立.
上图(图片来自于refactoringguru.cn)的"装饰风艺术"的椅子,沙发,咖啡桌为一个产品族
抽象工厂的工作是将"抽象零件"组装为"抽象产品"
组件
AbstractProduct(抽象产品) : 声明产品对象类型的接口
AbstractFactory(抽象工厂) : 声明创建抽象产品的操作的接口
ConcreteProduct(具体产品) - 定义由相应的ConcreteFactory创建的产品;它实现了AbstractProduct 接口
ConcreteFactory(具体工厂) : 实现创建具体产品的操作.
C ...