一、工厂方法模式:
1.简单工厂模式:
(1).抽象产品:定义了产品的规范,描述了产品的主要特性和功能
(2).具体产品:实现或继承抽象产品的子类
(3).具体工厂:提供了创建产品的方法,调用者通过该方法来获取产品
所有产品都共有一个工厂,如果新增产品,则需要修改代码,违反开闭原则,是一种编程习惯,可以借鉴这种编程思路
2.工厂方法模式
工厂方法模式的主要角色:
(1).抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法来创建产品
(2).具体工厂(Concrete Factory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建
(3).抽象产品(Product):定义了产品规范,描述了产品的主要特性和功能
(4).具体产品(Concrete Product):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应
给每个产品都提供了一个工厂,让工厂专门负责对应产品的生产,遵循开闭原则,项目中用得最多
3.抽象工厂模式:
工厂方法模式只考虑生产同等级产品,抽象工厂可以处理多等级产品的生产
抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可以生产多个等级的产品。一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂
如果有多个维度的产品需要配合生产时,优先建议使用抽象工厂,一般企业开发中使用较少
二、策略模式:
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响算法的客户;通过对算法的封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理
策略模式的主要角色如下:
抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。
环境(Context)类:持有一个策略类的引用,最终给客户端调用。
三、责任链设计模式
1.责任链设计模式:
为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住下一个对象的引用而连成一条链,当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止
2.责任链设计模式角色:
抽象处理者角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接
具体处理者角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者
客户类角色:创建处理链,并向链头的具体处理者对象提交请求,它不关心处理细节和请求的传递过程
优点:
降低了对象之间的耦合度、增强了系统的可扩展性、增强了给对象指派职责的灵活性、责任链简化了对象之间的连接、责任分担
缺点:
对比较长的职责链,请求的处理可能涉及多个处理对象,系统性能将受到一定影响。
职责链建立的合理性要靠客户端来保证,增加了客户端的复杂性,可能会由于职责链的错误设置而导致系统出错,如可能会造成循环调用。
四、单点登录:
单点登录是指只需要登录一次就可以范围所有信任的应用系统
JWT解决单点登录:
a.用户访问其他系统,会在网关判断token是否有效
b.如果token无效则会返回401(认证失败)前端跳转到登录页面
c.用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie
d.再去访问其他服务的时候,都需要携带token,由网关统一验证后路由到目标服务
五、权限认证:
后台的管理系统,更注重权限控制,最常见的就是RBAC模型来指导实现权限
RBAC(Role-Based Access Control)基于角色的访问控制:
3个基础部分组成:用户、角色、权限
具体实现:
5张表(用户表、角色表、权限表、用户角色中间表、角色权限中间表)
7张表(用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表)