首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    委派模式「建议收藏」

    github地址:https://github.com/1711680493 点我进入github 如需了解更多设计模式,请进入我的设计模式专栏 委派模式 委派模式不是23设计模式中的一种. 与策略模式很相似. 拥有以下三种角色 抽象任务角色 委派者角色 具体任务角色 委派模式,就是将任务发给委派者角色,委派者角色去委派具体任务角色 委派模式对外隐藏了具体实现,仅将委派者角色暴露给外部 委派模式和策略模式不同的是 ,委派者角色和具体任务角色都要继承/实现抽象任务角色 Spring框架很多地方用到了委派模式,例如 Dispatcher(转发) 代码实现 /** * 委派模式 * @author Shendi < ); } /** * 委派者 * @author Shendi <a href='tencent://AddContact/?

    50720编辑于 2022-07-31
  • 来自专栏编程之禅

    九、委派模式与模板模式详解

    14.委派模式 14.1.课程目标 1 、掌握委派模式, 精简程序逻辑, 提升代码的可读性。 2、学会用模板方法模式梳理使用工作中流程标准化的业务场景。 14.3.定义 委派模式(Delegate Pattern ) 又叫委托模式, 是一种面向对象的设计模式, 允许对象组合实现与 继承相同的代码重用。 委派模式属于行为型模式, 不属于GO F 23 种设计模式中。 14.4.委派模式的应用场景 委派模式在 Spring 中应用非常多 , 大家常用的 DispatcherServlet 其实就是用到了委派模式。先来看一下类图: ? 14.6.委派模式在源码中的体现 14.6.1.双亲委派模型 JDK 中有一个典型的委派 ,众所周知 JVM 在加载类是用的双亲委派模型 ,这又是什么呢?

    89320发布于 2020-08-12
  • 来自专栏每天学Java

    委派模式的使用

    在各种不足中,也还是有一些收获的,比如锁粒度的优化,分级锁的使用,会话的公平分配,注解校验接口参数,MySQL查询优化等等, 但是今天要聊的是在项目中使用的一种设计模式委派模式。 在很久之前自己也整理了23种设计模式(18年的时候写的,现在仍然放在公众号里面,好坏就不说了),但是在日常开发中,设计模式还是很少结合实际去运用, 自己熟悉且常用的设计模式无非就是单例,策略,代理这三种 23种设计模式分为创建型模式,结构型模式和行为型模式,我们要说的委派模式并不在23种设计模式中,它的功能核心是任务的调用和分配任务, 这种模式中主要包含了三种角色: 抽象任务角色, 委派者角色, 具体任务角色 我们熟知具体的应用: Spring MVC 中的 DispatcherServlet 根据 handlerMapping 转发具体执行逻辑到 Controller就是使用委派模式 下面来谈一谈这种设计模式的使用 GroupChatInfoDo groupChatInfoDo) { System.out.println("挂起动作"); } } 第二步: 将动作封装成枚举(也可以使用策略模式来避免委派模式违背开闭原则

    68520发布于 2020-06-02
  • 来自专栏Java后端技术栈cwnait

    韩信拜将:委派模式

    今天我给大家分享设计模式中的委派模式。用贴切的生活故事,以及真实项目场景来讲设计模式,最后用一句话来总结这个设计模式。 故事 从字面意义上来看,委派:指委托安排;委任派遣 。 在我们技术领域有个模式也叫委派模式,但委派模式不属于GOF的23种模式,但由于其性质和作用,大家都把委派模式归纳在行为模式中。 在楚汉传奇中,刘邦当时封韩信为大将军时,下面很多人非常不服。 委派模式的定义 委派模式:英文Delegate Pattern,它的基本作用就是负责任务的调度和分配任务。 在这里需要注意,委派模式和代理模式非常相似,可以把委派模式看作为一种特殊情况下的静态代理的全权代理。 代理模式:重点在于过程。委派模式:重点在于结果。 这边是一个非常典型的委派模式的应用场景。 用一张图表示: ?

    53410发布于 2021-06-09
  • 来自专栏vivo互联网技术

    委派模式——从SLF4J说起

    而上述两点,构成了本文接下来要讲述的知识点:委派模式。三、委派模式从上文中,我们从SLF4J的案例,引出了"委派模式"这个概念,下面我们就重点讨论委派模式(delegation)。 接下来我们按照认知流程,依次从三个问题,解释委派模式:为什么使用委派模式什么是委派模式如何使用委派模式然后会在下一章,用业内的典型案例,分析委派模式的使用情况。3.1 为什么采用委派模式? 综上而言:委派模式是基于当前软件领域的协作特性,采取的较好的软件结构模式。所以啥时候采用委派模式呢? 3.3 如何使用委派模式在使用委派模式之前,先根据上文的模式匹配条件进行自我判断:存在设定某个标准并由中心化团队负责的必要使用者有强烈的需求自定制某些局部实现如果并不符合条件一,那么就不需要考虑使用委派模式 委派模式的隐藏机制:实现方式的注册/发现。

    58421编辑于 2023-01-31
  • 来自专栏漏洞知识库

    域渗透之委派攻击详解(非约束委派约束委派资源委派

    委派是域中的一种安全设置,可以允许某个机器上的服务代表某个用户去执行某个操作,主要分为三种: 1、非约束性委派 2、约束性委派 3、基于资源的约束性委派 这篇文章主要对这三种委派方式相关的攻击进行详解 域渗透之委派攻击详解 非约束委派攻击利用 用户 A 去访问服务B,服务 B 的服务账户开启了非约束委派,那么当用户 A 访问服务 B 的时候会将用户 A 的 TGT 发送给服务 B 并保存进内存,服务 约束委派攻击原理及利用 由于非约束委派的不安全性(配置了非约束委派的机器在 LSASS 中缓存了用户的 TGT 票据可模拟用户去访问域中任意服务),微软在 Windows Server 2003 中引入了约束委派 不同于允许委派所有服务的非约束委派,约束委派的目的是在模拟用户的同时,限制委派机器/帐户对特定服务的访问。 S4U2self: (1) 用户向 service1 发送请求。 基于资源的约束委派不需要域管理员权限去设置,而把设置属性的权限赋予给了机器自身。 基于资源的约束性委派允许资源配置受信任的帐户委派给他们。

    13.5K103发布于 2021-11-10
  • 来自专栏鸿鹄实验室

    非约束委派&&约束委派

    委派是域中的一种安全设置,可以允许某个机器上的服务代表某个用户去执行某个操作,在域中只有机器帐户何服务帐户拥有委派属性,也就是说只有这两类帐户可以配置域委派,分为三种: 非约束委派 约束委派 基于资源的约束性委派11)Service 2 响应 Service 1 的访问请求。 (12)在得到 Service 2 的响应后,Service 1 现在可以响应用户在步骤(7)中发出的访问请求了。 但是,Service 1 没有来自用户的可转发 TGT ,因此不能通过非约束委派中转发 TGT 的方式执行委派。 设置约束委派 设置域机器WIN7-PC约束委派,设置对DC的CIFS服务进行委派 设置委派的机器用户或者服务用户的userAccountControl属性会设置TRUSTED_TO_AUTH_FOR_DELEGATION ,msDS-AllowedToDelegateTo属性会设置成委派的服务(如cifs) 通过Adfind.exe查询域中配置约束委派的账户 # 查询域中配置约束委派的机器账户 AdFind.exe

    1.4K20编辑于 2023-01-10
  • 来自专栏Tom弹架构

    你以为委派模式很神秘,其实每天都在用

    本文节选自《设计模式就该这样学》 1 使用委派模式模拟任务分配场景 我们用代码来模拟老板给员工分配任务的业务场景。首先创建IEmployee员工接口。 2 委派模式在JDK源码中的应用 JDK中有一个典型的委派,众所周知,JVM在加载类时用双亲委派模型,这又是什么呢?一个类加载器在加载类时,先把这个请求委派给自己的父类加载器去执行。 3 委派模式在Spring源码中的应用 下面来看委派模式在Spring中的应用,Spring IoC模块中的DefaultBeanDefinitionDocumentReader类,当调用doRegisterBeanDefinitions 再来还原一下Spring MVC的DispatcherServlet是如何实现委派模式的。创建业务类MemberController。 当然,在Spring中运用委派模式的情况还有很多,大家通过命名就可以识别。在Spring源码中,只要以Delegate结尾的都实现了委派模式

    34910编辑于 2021-12-21
  • 来自专栏凯哥Java

    【JVM】浅谈双亲委派和破坏双亲委派

    目录 一、前言 二、双亲委派 2.1、为什么需要双亲委派 2.2、双亲委派的实现 三、破坏双亲委派 3.1、为什么需要破坏双亲委派? 前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数据库驱动Driver为例,为什么要实现破坏双亲委派,下面一起来重温一下。 二、双亲委派 想要知道为什么要破坏双亲委派,就要先从什么是双亲委派说起,在此之前,我们先要了解一些概念: 对于任意一个类,都需要由加载它的类加载器和这个类本身来一同确立其在Java虚拟机中的唯一性。 3.1、为什么需要破坏双亲委派? 3.2、破坏双亲委派的实现 我们结合Driver来看一下在spi(Service Provider Inteface)中如何实现破坏双亲委派

    59530编辑于 2022-12-16
  • 来自专栏Tom弹架构

    你以为委派模式很神秘,其实你每天都在用

    本文节选自《设计模式就该这样学》 1 使用委派模式模拟任务分配场景 我们用代码来模拟老板给员工分配任务的业务场景。 首先创建IEmployee员工接口。 [file] 2 委派模式在JDK源码中的应用 JDK中有一个典型的委派,众所周知,JVM在加载类时用双亲委派模型,这又是什么呢?一个类加载器在加载类时,先把这个请求委派给自己的父类加载器去执行。 3 委派模式在Spring源码中的应用 下面来看委派模式在Spring中的应用,Spring IoC模块中的DefaultBeanDefinitionDocumentReader类,当调用doRegisterBeanDefinitions 再来还原一下Spring MVC的DispatcherServlet是如何实现委派模式的。创建业务类MemberController。 当然,在Spring中运用委派模式的情况还有很多,大家通过命名就可以识别。在Spring源码中,只要以Delegate结尾的都实现了委派模式

    45420发布于 2021-11-09
  • 来自专栏皮皮之路

    【JVM】浅谈双亲委派和破坏双亲委派

    前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数据库驱动Driver为例,为什么要实现破坏双亲委派,下面一起来重温一下。 二、双亲委派 想要知道为什么要破坏双亲委派,就要先从什么是双亲委派说起,在此之前,我们先要了解一些概念: 对于任意一个类,都需要由加载它的类加载器和这个类本身来一同确立其在Java虚拟机中的唯一性。 2.2、双亲委派的实现 双亲委派的实现其实并不复杂,其实就是一个递归,我们一起来看一下ClassLoader里的代码: protected Class<? 3.1、为什么需要破坏双亲委派? 3.2、破坏双亲委派的实现 我们结合Driver来看一下在spi(Service Provider Inteface)中如何实现破坏双亲委派

    1.7K20发布于 2018-08-03
  • 来自专栏JuneBao

    【设计模式 11】抽象工厂模式

    抽象工厂模式 抽象工厂模式( Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 AbstractProduct:抽象产品 Product:具体产品 简单工厂,工厂方法,抽象工厂 对比三种工厂模式,简单工厂直接在一个静态工厂中返回产品实例,没有对产品或工厂做任何抽象,是最简单粗暴的工厂模式 当抽象工厂模式中每一个具体工厂类只创建一个产品对象,也就是只存在一个产品等级结构时,抽象工厂模式退化成工厂方法模式;当工厂方法模式中抽象工厂与具体工厂合并,提供一个统一的工厂来创建产品对象,并将创建对象的工厂方法设计为静态方法时 ,工厂方法模式退化成简单工厂模式。 另外,应用抽象工厂模式可以实现高内聚低耦合的设计目的,因此抽象工厂模式得到了广泛的应用。 当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。

    47030编辑于 2022-10-26
  • 来自专栏技术杂货店

    设计模式11】-- 搞定组合模式

    组合模式的两种实现 组合模式有两种不同的实现,分别是透明模式和安全模式: 两者的区别在于透明模式将组合使用的方法放到抽象类中,而安全模式则是放到具体实现类中 透明模式 透明模式是把组合的方法抽象到抽象类中 设计模式系列: 设计模式【1】-- 单例模式到底几种写法? 设计模式【1.1】-- 你想如何破坏单例模式? 设计模式【1.2】-- 枚举式单例有那么好用么? 设计模式【1.3】-- 为什么饿汉式单例是线程安全的? 设计模式【2】-- 简单工厂模式了解一下? 设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式? 设计模式【3.3】-- CGLIB动态代理源码解读 设计模式【4】-- 建造者模式详解 设计模式【5】-- 原型模式 设计模式【6.1】-- 初探适配器模式 设计模式【6.2】-- 再聊聊适配器模式 设计模式 【7】-- 探索一下桥接模式 设计模式【8】-- 手工耿教我写装饰器模式 设计模式【9】-- 外观模式

    40610编辑于 2022-01-19
  • 来自专栏Lvshen的技术小屋

    设计模式11之装饰模式

    装饰模式就是这样的一种设计方式。 什么是装饰模式 “装饰模式(Decorator Pattern)是一种比较常见的模式,其定义如下:Attach additional responsibilities to an object dynamically 就增加功能来说,装饰模式相比生成子类更为灵活。) ” 是不是觉得跟代理模式有些像呢?对代理模式感兴趣的可以看看我的这篇文章: http://mp.weixin.qq.com/s? 关于装饰模式与代理模式 两者都是对功能增强。面试会经常问这两点区别。 我认为,装饰器模式关注于在一个对象上动态的添加方法,代理模式关注于控制对象的访问。 代理模式中史塔克和钢铁侠战甲已经绑死了,战甲也焊死了,小辣椒没法穿这套战甲了。 如图,左边为代理模式,右边为装饰模式

    30210编辑于 2022-05-05
  • 来自专栏技术客栈

    Java设计模式11)组合模式

    前言 在Java开发中,设计模式是常用的一种编码方式,合理使用设计模式可以帮助开发人员更快地编写出高效、可靠和可维护的代码。 本期将撰写一个关于设计模式的系列文章,总共23种设计模式将以一篇一篇文章讲解,代码笔记已开源至:Gitee点击跳转。在上一篇《Java设计模式(10)代理模式》文章中,我们介绍了代理模式。 本文是这个系列的第十一篇章,我们将讲解一下组合模式的实现方式、应用场景以及它的用途。 组合模式 组合模式是一种结构型设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。 组合模式使得客户端对单个对象和组合对象的使用具有一致性。 使用场景 树形结构:需要表示对象的部分-整体层次结构的系统。 文件系统:文件夹和文件的层次结构。 display 方法则用于遍历这个目录结构 测试使用 此处示例将目录和文件的创建封装成一个方法 System.out.println("------------------------------组合模式

    26410编辑于 2024-07-25
  • 来自专栏爱敲代码的猫

    java设计模式(11)-组合模式

    这篇文章分享一下组合模式,具体类似于树形的数据结构,二叉树中有具体运用,有兴趣的可以翻阅资料。 组合模式: 组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。 组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。 这就是组合模式能够将组合对象和简单对象进行一致处理的原因。 ; } } 优缺点: 优点: · 组合模式使得客户端代码可以一致地处理对象和对象容器,无需关系处理的单个对象,还是组合的对象容器。 将”客户代码与复杂的对象容器结构“解耦。 (这个是几乎所有设计模式所面临的问题)。 使用场景: 将多个对象组合在一起进行操作,常用于表示树形结构中,例如二叉树等。

    49850发布于 2019-10-17
  • 来自专栏全栈程序员必看

    双亲委派机制及打破双亲委派示例

    双亲委派机制 在加载类的时候,会一级一级向上委托,判断是否已经加载,从自定义类加载器-》应用类加载器-》扩展类加载器-》启动类加载器,如果到最后都没有加载这个类,则回去加载自己的类。 双亲委托有个弊端: 不能向下委派,不能不委派 怎么打破双亲委派机制:(也就是能向下委派和不委派) 自定义类加载器(不委派) spi机制(向下委派) 打破双亲委派 打破双亲委派的两种方式: 1.通过spi 由于双亲委派模型,父加载器是拿不到通过子加载器加载的类的。这个时候就需要启动类加载器来委托子类来加载Driver实现,从而破坏了双亲委派。 自定义类加载器 实现逻辑:自定义类继承classLoader,作为自定义类加载器,重写loadClass方法,不让它执行双亲委派逻辑,从而打破双亲委派。 ,从而打破双亲委派 if (name.startsWith("com.chuan")){ c=findClass(

    4K20编辑于 2022-07-25
  • 来自专栏Cyber Security

    【内网安全】横向移动&非约束委派&约束委派&资源约束委派&数据库攻防

    redteam.red 靶场 委派攻击分类: 1、非约束性委派 2、约束性委派 3、基于资源的约束性委派 关于约束委派与非约束委派 委派(Delegation)是指将用户或计算机帐户的权限授予其他用户或计算机帐户 其中,Windows中的委派分为两种类型:非约束委派和约束委派。 意思就是被域控进行非约束委派的域成员主机获得全部权限,并且该可以同样的可以进非约束委派至其他域成员主机 约束委派(Constrained Delegation)是指将用户或计算机帐户的部分权限授予另一个用户或计算机帐户 这意味着该帐户无法将委派权限向下传递给其他服务,因此更加安全。 总的来说,如果需要在Windows环境中使用委派功能,建议使用约束委派而不是非约束委派,以提高系统和数据的安全性。 横向移动-原理利用-约束委派&非约束委派 非约束委派 原理: 机器A(域控)访问具有非约束委派权限的机器B的服务,会把当前认证用户(域管用户)的的TGT放在ST票据中, 一起发送给机器B,机器B会把

    1.1K10编辑于 2024-07-18
  • 来自专栏大猫的Java笔记

    11.设计模式--装饰者模式(Decorator模式)

    1.定义 装饰者模式是一种结构型模型,是动态的给对象增加职责,对于新增功能来说要比通过子类方式更加的灵活。 2.装饰者模式结构图 Info为抽象类,为信息类,主要扮演角色为Component,相当于蛋糕或基本信息,为了协调装饰物与被装饰物的一致性。 3.装饰者模式实现 Info为抽象类,为信息类,主要扮演角色为Component,同时提供两个方法,一个获取基本信息,另一个获取所有信息,包括附加信息。 参考文献《图解设计模式》 代码获取地址:https://gitee.com/bughong/design-pattern

    86710发布于 2021-11-11
  • 来自专栏后端技术

    ClassLoader 双亲委派

    双亲委派 ClassLoader 传递性 使用调用者 Class 对象的ClassLoader加载。

    57430发布于 2019-05-25
领券