首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Lvshen的技术小屋

    设计模式6之代理模式

    关于代理模式,很好理解。比如你买演唱会的票,自己很难买到,只能去找黄牛,那么黄牛就是代理(非官方)卖火车票的。 在开发中,代理模式很常见。一个类的对象不直接生成,通过代理类去帮你生成对象。 一般我们想让一个对象的功能增强,就可以使用代理模式。 什么是代理模式 “Provide a surrogate or placeholder for another object to control access to it. 那么代理模式有哪些要素组成呢? 抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。 关于动态代理 代理模式的比较高级的应用,可以参考我的这篇文章: http://mp.weixin.qq.com/s?

    24730编辑于 2022-05-05
  • 来自专栏爱敲代码的猫

    java设计模式(6)-装饰模式

    上一篇文章分享了适配器模式,这篇推文整理一下装饰模式,和代理模式非常相似,但是实现和应用的场景不一样 装饰模式就是给一个对象增加一些新的功能,要求装饰对象(代理对象)和被装饰对象(真实类)实现同一个接口 总结: 装饰模式中,装饰类对被代理对象没有控制权,只能为其增加一层装饰,以加强被装饰对象的功能下一篇推文整理一下和装饰模式的进阶--代理模式--使用到极致开发就是SpringAOP的简单实现原理

    46030发布于 2019-10-17
  • 来自专栏Python机器学习算法说书人

    Python设计模式6):组合模式

    组合模式即为解决这个问题的一个有效解决办法,即允许一致对待复杂和原始对象的接口。在面向对象编程技术中,组合对象是一个或者多个相似对象构成的对象,各个对象有相似的功能。 组合模式有时候又叫部分 - 整体模式。在树型结构问题中模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 组合模式指将对象组合成树形结构,以表示“部分 - 整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式结构图如图所示。 ? 组合模式所包含的各组成部分意义如下。 Leaf:在组合模式中表示叶节点对象,叶节点对象没有子节点,实现 Component 的所有方法。 组合模式的优点如下。 定义了包含基本对象和组合对象的类层次结构,基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合。 简化了客户代码。

    1.6K10发布于 2019-07-26
  • 来自专栏自动化、性能测试

    Flask(6)- debug 模式

    使用 Flask 开发过程中存在两个常见的问题 当 Flask 程序出错时,没有提示错误的详细信息 修改 Flask 源代码后需要重启 Flask 程序 这两个问题非常的影响开发效率,因此 Flask 引入了 debug 模式解决以上问题 错误示例 #! 浏览器中提示 Internal Server Error,表示服务端程序出现错误,但是没有给出错误的详细信息,即产生错误的文件、函数、行号等位置信息,排查错误非常不方便 修改源代码后需要重启 开发 Flask ,编辑 Flask 源程序,将 ‘hello world’ 修改为 ‘HELLO WORLD’ 切换到终端,终止原先运行的 Flask 程序,再次运行 Flask 程序 切换到浏览器,访问页面 / 在开发的过程中 这个时候,我们就需要使用 Debug 模式来快速解决上面的这两个问题 Flask 的 Debug 模式 Flask 程序可以运行在 Debug 模式下,Debug 模式提供了如下功能: 当 Flask

    1.1K20发布于 2021-07-14
  • 来自专栏大猫的Java笔记

    6.设计模式--建造者模式(Builder模式)

    1.场景 建造者模式也是一种创建型模型,是将一个复杂的对象的构建与他的表示分离。 建造者模式大多数情况下,都是通过静态内部类来进行实现的。例如现在有一个小说书类,有4个属性name、author、title、content分别表示书名、作者、标题、内容。 4.JDK中建造者模式实现 JDK中的建造者模式除了之前说的lombok使用静态内部类的方式,还有就是使用StringBuffer类的append方法。 建造者模式优缺点 优点: 1.客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。 2.建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,若产品之间的差异性很大,则不适合使用该模式,因此其使用范围受到一定限制。

    69010发布于 2021-09-29
  • 来自专栏技术客栈

    Java设计模式6)桥接模式

    前言 在软件开发的世界里,设计模式如同一本精妙的编码诗集,已经成为一种标准的编程实践。在Java编程中,设计模式很重要。 是软件开发中广泛应用的一种编程方法,它可以帮助开发人员更快地编写出高效、可靠和可维护的代码。 本人将制作一个关于Java设计模式的系列文章,总共23种设计模式将以一篇一篇文章讲解,代码笔记已开源:Gitee点击跳转。在上一篇《Java设计模式(5)适配器模式》文章中,我们介绍了适配器模式。 本文是这个系列的第六篇章,我们将讲解一下桥接模式的实现方式、应用场景以及它的用途。 桥接模式 桥接模式是将抽象部分与其实现部分分离,使它们可以独立变化,而不会相互影响。 还有Java AWT 和 Swing 中的图形界面组件也是使用了桥接模式。抽象部分是图形界面组件的功能,而实现部分则是对应操作系统平台上的实际图形界面组件的实现。

    32910编辑于 2024-04-18
  • 来自专栏CSDN搜“看,未来”

    我用过的设计模式6)-- 门面模式

    文章目录 门面模式 门面模式 什么是“门面”?门面就是让你一看就知道里面可以提供什么东西,但是你又不会知道它是如何提供的。 门面模式是什么? 我知道,这张图也看不明白在讲什么。 门面模式是个很好的模式,很符合面向接口编程,遵守了依赖倒置原则、迪米特法则等,当然,有些书说违背了开-闭原则,我个人认为,门面模式并不妨碍拓展,只要把基类抽取好,新功能只需要继承或依赖与基类即可。 以下是一段教科书式的评判:(外观模式 == 门面模式) 外观模式的优点非常显而易见,对客户屏蔽了内部系统实现,客户的接入成本大大降低,耦合度也变得简单。 同时,外观模式虽然提供了一个统一的入口,但并不妨碍用户直接使用子系统,使用更加复杂的功能。当然,凡事有利必有弊,外观设计模式存在什么问题呢? 其次,外观模式实际上违背了设计模式中的开闭原则,如果我们要修改业务逻辑,常常业务方也需要进行代码修改。那么,什么样的情况下适合使用外观模式呢?

    29310发布于 2021-09-18
  • 来自专栏CSDN搜“看,未来”

    我用过的设计模式6)-- 门面模式

    [在这里插入图片描述] 门面模式 什么是“门面”?门面就是让你一看就知道里面可以提供什么东西,但是你又不会知道它是如何提供的。 门面模式是什么? 门面模式是个很好的模式,很符合面向接口编程,遵守了依赖倒置原则、迪米特法则等,当然,有些书说违背了开-闭原则,我个人认为,门面模式并不妨碍拓展,只要把基类抽取好,新功能只需要继承或依赖与基类即可。 以下是一段教科书式的评判:(外观模式 == 门面模式) 外观模式的优点非常显而易见,对客户屏蔽了内部系统实现,客户的接入成本大大降低,耦合度也变得简单。 同时,外观模式虽然提供了一个统一的入口,但并不妨碍用户直接使用子系统,使用更加复杂的功能。当然,凡事有利必有弊,外观设计模式存在什么问题呢? 其次,外观模式实际上违背了设计模式中的开闭原则,如果我们要修改业务逻辑,常常业务方也需要进行代码修改。那么,什么样的情况下适合使用外观模式呢?

    44800发布于 2021-02-25
  • 来自专栏∑小熊猫的博客

    Java 设计模式系列(6) —— 原型模式

    原型模式 原型模式的定义: 用原型实例创建对象的种类,并且通过复制这些原型创建新的对象 原型模式涉及的三个角色: Client 角色 (客户角色): 该角色提出创建对象的请求 Prototype 角色 原型模式的简单示例 ? 原型模式的优点及使用场景 优点: 性能优良:原型模式是直接在内存二进制流中进行复制的,要比直接 new 一个对象的性能要高,特别是在循环体内产生大量对象时。 原型模式可以更好的提现其优点 逃避构造函数的约束, 原型模式的使用场景: 资源优化场景: 类初始化需要消耗很多资源,这个资源包括数据和硬件资源等 性能和安全要求场景: 通过 new 产生一个新的对象需要非常繁琐的数据准备或访问权限 ,可以使用原型模式 一个对象多个修改者场景: 一个对象需要给其他对象访问,各个调用对象都可能对齐进行修改是,可以考虑

    41620发布于 2021-01-06
  • 来自专栏狮乐园

    高级 Angular 组件模式 (6)

    06 Use <ng-template> 原文: Use <ng-template> Render Props最近在React社区中引起了轰动,但是与之类似的模式在Angular中似乎并没有得到太多关注 成果 stackblitz演示地址 译者注 这种组件设计模式按我个人的理解,其实是依赖倒置原则在视图渲染层的一种延伸,为什么这么说呢? 除了上面的解决方法,就是使用正文中所提及的模式了,这种模式将子组件视图的渲染逻辑倒置为子组件仅仅声明模板中所会使用的状态变量,对于这些变量和模板的注入工作,全权赋予父组件,因此会使子组件的复用性和可测试性大大提高 为了适应表单校验的灵活性,我们使用这种模式会事半功倍,提供校验信息的组件仅仅声明渲染表单错误提示信息需要设计的状态变量即可,比如dirty、touched等等,对于错误信息的文案及样式,统统交由错误提示组件的使用者完成

    1.6K20发布于 2020-01-21
  • 来自专栏FECoding

    深入 Babel 6 loose 模式

    1.前言 Babel 的 loose 模式将 ES6 代码转译成 ES5 代码,loose 模式是不太忠实于 ES6 语义的。这篇文章解释了它是怎么工作的以及它的优点与缺点(剧透:通常是不推荐的)。 下面回归主题,探究 Babel 6 的 loose 模式。 2. 两种模式 许多 Babel 的插件有两种模式: • 尽可能符合 ECMAScript6 语义的 normal 模式。 • 缺点:你是在冒险——随后从转译的 ES6 到原生的 ES6 时你会遇到问题。这个险是很不值得冒的。 2.1 切换到 loose 模式 es2015-loose 是标准的 ES6 预设(preset)es2015 的 loose 版。 在 normal 模式下,类的 prototype 方法是通过Object.defineProperty添加的(第 A 行),来确保它们是不可以被枚举的,这是 ES6 规范所要求的。

    4.1K30发布于 2019-04-25
  • 来自专栏Web 技术

    【ES6】promise 模式

    JavaScript Promise迷你书(中文版) http://www.infoq.com/cn/news/2011/09/js-promise/ JavaScript异步编程的Promise模式

    32820编辑于 2023-10-07
  • 来自专栏用户7873631的专栏

    外观模式(javascript版)6

    像工厂模式

    29630发布于 2020-10-28
  • 来自专栏狮乐园

    高级 Vue 组件模式 (6)

    成果 你可以通过下面的链接来看看这个组件的实现代码以及演示: sandbox: 在线演示 github: part-6 总结 关于指令的概念,我自身还是在 angularjs 中第一次见到,当时其实不兴组件化开发这个概念 到后来兴起了组件化开发开发思想,指令似乎是随着 angularjs 的没落而消失了踪影。 但仔细想想的话,web 开发流程中,并不是所有的场景都可以拿组件来抽象和描述的,比如说,你想提供一个类似高亮边框的公用功能,到底如何来按组件化的思想抽象它呢?这时候使用指令往往是一个很好的切入点。

    75220发布于 2020-01-21
  • 来自专栏狮乐园

    高级 Angular 组件模式 (6)

    06 Use <ng-template> 原文: Use <ng-template> Render Props最近在React社区中引起了轰动,但是与之类似的模式在Angular中似乎并没有得到太多关注 成果 stackblitz演示地址 译者注 这种组件设计模式按我个人的理解,其实是依赖倒置原则在视图渲染层的一种延伸,为什么这么说呢? 除了上面的解决方法,就是使用正文中所提及的模式了,这种模式将子组件视图的渲染逻辑倒置为子组件仅仅声明模板中所会使用的状态变量,对于这些变量和模板的注入工作,全权赋予父组件,因此会使子组件的复用性和可测试性大大提高 为了适应表单校验的灵活性,我们使用这种模式会事半功倍,提供校验信息的组件仅仅声明渲染表单错误提示信息需要设计的状态变量即可,比如dirty、touched等等,对于错误信息的文案及样式,统统交由错误提示组件的使用者完成

    1.2K10发布于 2018-10-19
  • 来自专栏AlbertYang的编程之路

    设计模式(6)-JavaScript如何实现抽象工厂模式

    1 学习目标 通过本篇文章的学习,你应当掌握以下知识: 1 知道什么是抽象工厂模式? 2 掌握抽象工厂模式的作用以及什么时候需要使用抽象工厂模式 3 掌握使用JS实现抽象工厂模式的代码编写。 2 什么是抽象工厂模式? 抽象工厂模式提供了一种封装一组具有相同主题的单个工厂而无需指定其具体类的方法。即工厂的工厂;一个将单个相关/从属工厂分组在一起的工厂,但未指定其具体类别。 如果您的应用程序需要对对象创建过程进行更多控制,请考虑使用抽象工厂模式。 3 抽象工厂模式作用 当存在相互关联的依赖关系且涉及非简单创建逻辑时,建议使用抽象工厂模式。 4 抽象工厂模式参与者 ? 抽象工厂模式参与者主要有: AbstractFactory: 1 声明产品的接口 2 在JavaScript中不使用 ConcreteFactory: 1 工厂对象 2 create()方法返回新产品

    1.3K41发布于 2020-09-08
  • 来自专栏AgenticAI

    6种AI Agent模式详解

    在本文中,我们将探讨多种构建 AI 智能体结构的模式。这些模式有助于我们扩展功能、保持模块化,并更好地控制执行流程。 为什么使用多智能体模式? 一开始,通常会采用单智能体模型。 接下来,我将逐一为你介绍这些模式: 1. 单智能体模式 这是最简单的智能体模式,仅使用一个智能体,直接与工具和环境交互。 img 特点: 适用于线性或流程简单的任务 所有逻辑与决策均由一个模型内部处理 几乎不需要协调机制 适用场景: 快速原型开发、FAQ 问答机器人、单一功能应用等 2. 网络模式 在网络模式中,智能体之间以多对多的关系连接。任何一个智能体都可以与其他任意智能体通信,并将任务委派给它们。 适用于按领域或部门划分逻辑的系统 每个监督者管理一组特定任务或智能体 优势: 高度可扩展且结构清晰 各层级具备模块化控制能力 挑战: 实现复杂度较高 层级之间需要明确定义接口 适用场景: 企业级系统、多领域编排任务 6.

    1.1K10编辑于 2025-07-27
  • 来自专栏mySoul

    web开发模式

    -1253878077.cos.ap-chengdu.myqcloud.com/blog-image/2019/03/2019-03-17%2002-08-04%E5%B1%8F%E5%B9%95%E6%

    85240发布于 2019-03-18
  • 来自专栏知无不言 - 畅所欲言

    RabbitMQ 的 6 种工作模式

    1、RabbitMQ的 6 种工作模式先以 java 应用程序的方式连接 RabbitMQ ,后期再考虑与 Spring Boot 整合工作。 (Work queues)竞争者的消费模式。 1.3、路由模式(Routing)1.3.1、流程图1.3.2、特点根据路由键匹配发送消息到队列。一个路由键可以绑定多个队列,一个队列也可以绑定多个路由键。 1.4、通配符模式(Topics)1.4.1、流程图1.4.2、特点* 可以匹配一个单词,# 匹配多个单词,路由键以 “.” 2、模式总结几种工作模式差不多就是对应几种交换器,并且如果一个队列里面存在多个消费者,那么都会有竞争消费的情况。交换器的匹配功能分别为广播、全匹配路由键与模糊匹配路由键。

    54520编辑于 2023-11-17
  • 来自专栏全栈程序员必看

    hybrid开发模式

    Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。

    54260编辑于 2022-11-09
领券