设计模式
文章平均质量分 84
Hi丶ImViper
这个作者很懒,什么都没留下…
展开
-
一文搞定权限管理!授权、鉴权超详细解析
一文搞定权限管理!授权、鉴权超详细解析授权概览什么是授权 (Authorization)?广义上的授权:是上级将完成某项工作所必须的权力授给部属人员;是领导者通过为员工和下属提供更多的自主权,以达到组织目标的过程。信息系统中的授权:是管理员将某些资源的访问、管理、操作等权限赋予用户,达到管理和使用的目的。譬如主机的访问使用权限,某项功能菜单的使用权限亦或是某个数据的读写权限。本文将对信息系统中的授权进行着重讲解授权的意义授权管理是所有业务系统不可缺少的一部分!企业角度:1)贴合管理制度原创 2021-06-30 17:06:38 · 5304 阅读 · 0 评论 -
一文搞定权限设计模型(RBAC,ABAC)超详细图文解析
术语用户发起操作的主体。对象(Subject)指操作所针对的客体对象,比如订单数据或图片文件。权限控制表 (ACL: Access Control List)用来描述权限规则或用户和权限之间关系的数据表。权限 (Permission)用来指代对某种对象的某一种操作,例如“添加文章的操作”。权限标识权限的代号,例如用“ARTICLE_ADD”来指代“添加文章的操作”权限。常见设计模式自主访问控制(DAC: Discretionary Access Control)系统会识别用户,然后原创 2021-06-30 17:06:02 · 13979 阅读 · 2 评论 -
什么是读、写扩散?
什么是读、写扩散?读写扩散的概念inbox: 收件箱,你收到的消息,即你所关注的人发布的消息。outbox: 发件箱,你发布的消息。写扩散(Push)该方式为每个用户维护一个订阅列表,记录该用户订阅的消息索引(一般为消息ID、类型、发表时间等一些元数据)。每当用户发布消息时,都会去更新其follower的订阅列表。优点:读很轻。初始化时仅需要读取自己的inbox即可。缺点:写很重。每发布一个消息,会导致大量的写操作。注:一般来说,用户发布消息,并不会更新所有followers的订阅列表,仅更原创 2021-06-20 18:46:09 · 1867 阅读 · 0 评论 -
2021设计模式春招面试复习:状态模式
0源码地址https://github.com/ImViper/design_pattern1 前言有时一个对象的行为取决于一或多个动态变化的属性(状态),这样的对象称为有状态的(stateful)对象,其对象状态是从事先定义好的一系列值中取出。当这样的对象与外部事件产生互动时,内部状态就会改变,对象行为也随之变化。在UML中可以使用状态图来描述对象状态的变化。在状态模式中,创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。2 定义该模式中,类的行为基于其状态改变。原创 2021-01-12 13:39:12 · 863 阅读 · 0 评论 -
2021设计模式春招面试复习:中介者模式
0源码地址https://github.com/ImViper/design_pattern0 进销存管理简介各个公司都有相同的三个环节:采购、销售和库存比如一个软件公司,要开发软件,就需要购买开发环境,如Windows操作系统、数据库产品等,这就是采购开发完产品还要把产品推销出有产品就必然有库存,软件产品也有库存,虽然不需要占用库房空间,但也要占用光盘或硬盘,这也是库存就来讲讲它的原理和设计,一般的做法都是通过数据库来完成相关产品的管理以终端销售商(以服务最终客户为目标的企业,如超市原创 2021-01-12 13:38:20 · 688 阅读 · 0 评论 -
2021设计模式春招面试复习:原型模式
0源码地址https://github.com/ImViper/design_pattern0 导读 - 个性化电子账单● 个性化服务一般银行都要求个性化服务,发过去的邮件上总有一些个人信息吧,比如“××先生”,“××女士”等● 递送成功率邮件的递送成功率有一定的要求,由于大批量地发送邮件会被接收方邮件服务器误认是垃圾邮件,因此在邮件头要增加一些伪造数据,以规避被反垃圾邮件引擎误认为是垃圾邮件从这两方面考虑广告信的发送也是电子账单系统的一个子功能,来考虑一下广告信这个模块是怎么开发的既然是广原创 2021-01-12 13:00:16 · 623 阅读 · 0 评论 -
2021设计模式春招面试复习:命令模式
0源码地址https://github.com/ImViper/design_pattern定义与类型适用场景优点缺点相关模式备忘录模式经常结合使用coding典型应用是GUI中的绘图程序, 用命令模式实现“撤销”操作.命令接收者:执行实际任务。命令者:封装所有命令者的信息。发起者:空着一个或者多个命令的顺序和执行。客户端:创建具体的命令实例public class DrawInvoker { //绘制列表 private List&原创 2021-01-11 12:34:17 · 622 阅读 · 0 评论 -
2021设计模式春招面试复习:解释器模式(Interpreter-Pattern)
0源码地址https://github.com/ImViper/design_pattern0 讲讲运算的核心——模型公式及其如何实现0.1 业务需求:输入一个模型公式(加、减运算),然后输入模型中的参数,运算出结果设计要求● 公式可以运行时编辑,并且符合正常算术书写方式,例如a+b-c● 高扩展性,未来增加指数、开方、极限、求导等运算符号时较少改动● 效率可以不用考虑,晚间批量运算需求不复杂,若仅仅对数字采用四则运算,每个程序员都可以写出来但是增加了增加模型公式就复杂了先解释一下为什么原创 2021-01-11 12:33:37 · 490 阅读 · 0 评论 -
2021设计模式春招面试复习:工厂方法模式
0源码地址https://github.com/ImViper/design_pattern0 简单工厂案例JDK 应用实例日历类迭代器Collection 接口就相当于 VideoFactory相当于各种具体的工厂,如 JavaVideoFactoryItr 就是具体产品 JavaVideo工厂应用为解决 url 协议扩展使用logback 应用JDBC实例返回值是一个抽象类,必有一子类实现其,看一下这其中URLStr..原创 2021-01-11 12:29:44 · 1010 阅读 · 0 评论 -
设计模式面试复习!为你的春招做好准备!
Table of Contents generated with DocToc23种设计模式彩图动态代理和静态代理静态代理动态代理静态代理与动态代理的区别JDK中的动态代理和CGLIB实现动态代理的方案有下列几种设计模式主要分三个类型:创建型、结构型和行为型。创建型Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。Fact..原创 2020-12-07 13:46:49 · 507 阅读 · 0 评论 -
设计模式面试复习,为你的春招做准备!
Table of Contents generated with DocToc23种设计模式彩图动态代理和静态代理静态代理动态代理静态代理与动态代理的区别JDK中的动态代理和CGLIB实现动态代理的方案有下列几种设计模式主要分三个类型:创建型、结构型和行为型。创建型Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。Fact..原创 2020-12-06 02:24:24 · 1218 阅读 · 0 评论 -
为什么要学习设计模式?看完这篇你就懂了!
为啥要看项目更好维护实现更优雅读源码更轻松理解面向对象设计模式是解决很多问题的更优雅的实现,很多项目难以维护或者难以拓展都是因为设计的时候很多没有做好。当然这里一开始只有最简单的 GoF23种设计模式,后面会考虑将Spring或者其他源码里面抽出,结合设计模式来讲,可能会更好一些很多优秀的开源组件框架都大量用到设计模式,很多时候你看不懂,或者读起来也就那样,没有那种原来如此,令你眼前一亮的感觉。其实就是设计模式你还没有理解。比如我一开始看Spring的Ioc实现原理,我根本没有看出来他哪里原创 2020-11-11 10:36:21 · 1926 阅读 · 0 评论 -
一文搞定设计模式!五万字超详细解析!带着耐心点进来!
一、概述设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。二、创建型1. 单例(Singleton)Intent确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 ImplementationⅠ 懒汉式-线程不安全原创 2020-10-19 16:33:26 · 2905 阅读 · 0 评论 -
设计模式系列(图文解析,附带源码) - 适配器
1. 适配器(Adapter)Intent把一个类接口转换成另一个用户需要的接口。 Class Diagram Implementation鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子!public interface Duck { void quack();}p原创 2020-10-16 23:57:47 · 272 阅读 · 1 评论 -
设计模式系列(图文解析,附带源码) - 生成器
5. 生成器(Builder)Intent封装一个对象的构造过程,并允许按步骤构造。Class Diagram Implementation以下是一个简易的 StringBuilder 实现,参考了 JDK 1.8 源码。public class AbstractStringBuilder { protected char[] value; protected int count; public AbstractStringBuilder(int capacity原创 2020-10-16 23:57:07 · 745 阅读 · 0 评论 -
设计模式系列(图文解析,附带源码) - 模板方法
模板方法(Template Method)Intent定义算法框架,并将一些步骤的实现延迟到子类。通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。Class Diagram Implementation冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 public abstract class CaffeineBeverage { final void prepareRecipe() { boilWater原创 2020-10-16 23:54:33 · 730 阅读 · 0 评论 -
设计模式系列(图文解析,附带源码) - 命令
2. 命令(Command)Intent将命令封装成对象中,具有以下作用:使用命令来参数化其它对象将命令放入队列中进行排队将命令的操作记录到日志中支持可撤销的操作Class DiagramCommand:命令Receiver:命令接收者,也就是命令真正的执行者Invoker:通过它来调用命令Client:可以设置命令与命令的接收者 Implementation设计一个遥控器,可以控制电灯开关。 public interface Command { void原创 2020-10-16 23:51:01 · 221 阅读 · 0 评论 -
设计模式系列(图文解析,附带源码)- 空对象
空对象(Null)Intent使用什么都不做的空对象来代替 NULL。一个方法返回 NULL,意味着方法的调用端需要去检查返回值是否是 NULL,这么做会导致非常多的冗余的检查代码。并且如果某一个调用端忘记了做这个检查返回值,而直接使用返回的对象,那么就有可能抛出空指针异常。Class Diagram Implementationpublic abstract class AbstractOperation { abstract void request();}public原创 2020-10-16 23:50:33 · 412 阅读 · 1 评论