首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏爱敲代码的猫

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

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

    49930发布于 2019-10-17
  • 来自专栏Lvshen的技术小屋

    设计模式6之代理模式

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

    27630编辑于 2022-05-05
  • 来自专栏Python机器学习算法说书人

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

    导言 在软件设计与编程中经常会遇到树形数据。当处理树形结构的数据时,程序员必须经常区分叶子节点与树的一个树枝节点。这往往会使代码变得更加复杂,并且很容易出错。 组合模式有时候又叫部分 - 整体模式。在树型结构问题中模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 组合模式指将对象组合成树形结构,以表示“部分 - 整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式结构图如图所示。 ? 组合模式所包含的各组成部分意义如下。 Leaf:在组合模式中表示叶节点对象,叶节点对象没有子节点,实现 Component 的所有方法。 使设计变得更通用。

    1.7K10发布于 2019-07-26
  • 来自专栏技术客栈

    Java设计模式6)桥接模式

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

    39710编辑于 2024-04-18
  • 来自专栏大猫的Java笔记

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

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

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

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

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

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

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

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

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

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

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

    46620发布于 2021-01-06
  • 来自专栏软件研发

    架构设计模式6设计原则

    架构设计模式6设计原则架构设计是软件开发中非常重要的一环,良好的架构可以提高软件系统的可维护性、可扩展性和可重用性。在架构设计过程中,遵循一定的设计原则可以帮助我们构建合理的架构。 本文介绍6大常用的架构设计原则,他们是:单一职责原则(Single Responsibility Principle, SRP) 单一职责原则要求一个类或模块只负责完成一项职责。 以上6设计原则是架构设计过程中常用的准则,不同的原则可以结合使用,根据具体的应用场景进行选择。遵循这些原则可以帮助我们构建高质量的软件系统。 这样设计的好处是,我们可以方便地添加新的形状,而不会影响到已有的代码功能。

    2.4K41编辑于 2023-11-02
  • 来自专栏一个会写诗的程序员的博客

    架构设计模式6设计原则

    架构设计原则 6设计原则 Single Responsibility Principle  : 单一职责原则 Liskov Substitution Principle : 里氏替换原则 但是: 大多数重构都为程序引入了更多的间接层 过多的间接层会导致代码的层次太深 使代码难以阅读.因此要权衡加入间接层的利弊 理解设计模式 ? image 1、GOF在书中说:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述; 设计模式就是不断反省,将软件开发经验抽象积累成解决问题的预案。 但是要记住,间接层应用过于泛滥,则会过犹不及,它会导致简单问题复杂化、跳跃阅读、难以理解等问题,适度的使用间接层,设计模式就是很好的范例。 不过在具体操作上,23种模式中间接层的应用可大可小,无比灵活,注意其应用场景。 3、设计模式中广泛遵循了两条设计原则:面向接口编程,而不是实现;优先使用组合,而不是继承。 ........

    2.1K60发布于 2019-07-04
  • 来自专栏AlbertYang的编程之路

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

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

    1.4K41发布于 2020-09-08
  • 来自专栏XINDOO的专栏

    Agent设计模式——第 6 章:规划

    实操代码(Crew AI) 以下部分将演示使用 Crew AI 框架实现规划模式。此模式涉及一个 Agent,它首先制定多步计划以解决复杂查询,然后顺序执行该计划。 Google DeepResearch Google Gemini DeepResearch(见图 1)是一个基于 Agent 的系统,设计用于自主信息检索和综合。 该报告设计为交互式的,通常包括音频概述、图表和指向原始引用来源的链接等功能,允许用户验证和进一步探索。除了综合结果外,模型还明确返回它搜索和咨询的完整来源列表(见图 2)。 OpenAI Deep Research API OpenAI Deep Research API 是一个专门设计用于自动化复杂研究任务的工具。 每当任务需要一系列相互依赖的操作以达到最终的综合结果时,应用规划模式。 视觉摘要 ** ** 图 4;规划设计模式 关键要点 规划使 Agent 能够将复杂目标分解为可操作的顺序步骤。

    78710编辑于 2025-10-27
  • 来自专栏小程序深入

    设计模式-6大原则

    内容来自参考《大话设计模式》与自己的话术结合1. 单一职责(SRP Single Responsibility Principle):概念 就一个类而言,应该仅有一个引起它变化的原因。 既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。 ,单一得原则只是限制,使用正常得模式才能让项目更为完整1. 对于方式二,内部的耦合性还是太高,导致每个步骤的关联性太强,不拿到菜单就不能付钱,如果一个流程卡住,就会导致整个生产线停止,,所以针对第二种方式,我们拆解步骤,使用状态模式,这里还可以用其他的模式6. 接口隔离原则(ISP Interface Segregation Principle)概念 A、客户端不应该依赖它不需要的接口。 B、类间的依赖关系应该建立在最小的接口上。

    65821编辑于 2022-07-25
  • 来自专栏信数据得永生

    Java 设计模式最佳实践:6~9

    根据这个页面的说法,一个没有回应的网站在搜索引擎中的排名很低: “响应式设计是谷歌的推荐设计模式” 反应式系统是一种使用元素构成复杂系统的架构风格,有些元素是用反应式编程技术构建的。 在下一章中,我们将学习最常用的反应式编程模式,以及如何在代码中应用它们。 七、反应式设计模式 在最后一章中,我们讨论了反应式编程风格,并强调了进行反应式编程的重要性。 让我们看看帮助我们在应用中实现响应性的一些核心模式。 请求-响应模式 我们将从最简单的设计模式开始,请求-响应模式,它解决了反应式编程的响应性支柱。这是我们在几乎所有应用中使用的核心模式之一。 以下是使用反应式应用编程时需要注意的主要设计模式。 事件驱动的沟通模式 事件驱动通信是指两个或多个组件基于某个事件相互传递消息。事件可以是添加新数据、更新数据状态或删除数据。 模型-视图-控制器架构 另一个广泛使用的组织代码的标准是遵循模型视图控制器(MVC)架构设计模式。顾名思义,我们正在考虑将应用组织为三个部分,即模型、视图和控制器。

    2.3K10编辑于 2023-04-23
  • 来自专栏java达人

    透过源码学习设计模式6—策略模式与Comparator

    简介: 定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户端。它首先定义不同的算法策略,然后客户端把算法策略作为它的一个参数。 使用这种模式的一个不错的例子是Collection.sort()方法了,它使用Comparator对象作为参数。根据Comparator接口不同实现,对象会被不同的方法排序。 ? 2、针对接口编程,而不是针对实现 3、多用组合,少用继承 一般使用场景: 当系统能在几种算法中快速地切换,或系统中有一些类,它们仅行为不同时,或系统中存在多重条件选择语句时,可以考虑采用策略模式。 sort()方法是常用的策略设计模式示例之一,它以Comparator作为参数,我们可以为Comparator接口提供不同的实现。 System.out.println("\nEmployees (Sorted by JoiningDate) : " + employees); } } 与状态模式区别

    1.3K20发布于 2019-09-24
  • 来自专栏EdisonTalk

    设计模式的征途—6.建造者(Builder)模式

    建造者模式(Builder) 学习难度:★★★★☆ 使用频率:★★☆☆☆ 一、从游戏角色设计谈起 M公司游戏开发部想要开发一款名为Manulife群侠传的网络游戏,该游戏采用主流的RPG(角色扮演游戏 作为RPG游戏的一个重要组成部分,需要对游戏角色进行设计,而且随着该游戏的升级将不断增加新的角色。 如果将抽象工厂模式看成一个汽车配件生产厂,生成不同类型的汽车配件,那么建造者模式则是一个汽车组装厂,通过对配件进行组成返回一辆完整的汽车。 三、游戏角色设计实现方案 3.1 方案结构图 ?    以建造者模式为基础来实现游戏角色的设计,其中ActorController充当指挥者(Director),ActorBuilder充当抽象建造者,HeroBuilder、AngelBuilder和DevilBuilder 刘伟,《设计模式的艺术—软件开发人员内功修炼之道》 作者:周旭龙 出处:http://edisonchou.cnblogs.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,

    56740发布于 2018-08-20
  • 来自专栏爱敲代码的猫

    java设计模式(6)-代理模式(必看的springAOP原理)

    代理模式: 代理模式 最典型的应用就是AOP,本文结合主要讲解了代理模式的几种实现方式:静态代理和动态代理,这里动态代理又可以分为jdk代理和Cglib代理 代理模式的角色: 1.Source:代理者与被代理者共同实现的接口 如果有多个被代理类(真实类),客户端想要实现业务逻辑,那么就需要不断的创建代理类的对象,造成代码重复,加重维护工作 动态代理: jdk 代理: 所谓的jdk代理指的是借助jdk所提供的相关类来实现代理模式 在实现代理模式时,只需要实现InvocationHandler接口即可 //用户管理接口 public interface UserManager { //新增用户抽象方法 void addUser

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

    设计模式6大原则(6)开闭原则

    开闭原则(OCP) 是 面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之中的一个,其他非常多的设计原则都是实现开闭原则的一种手段。 遵循开闭原则设计出的模块具有两个主要特征: (1) 对于扩展是开放的(Open for extension)。这意味着模块的行为是能够扩展的。 作为 系统设计的抽象层,要预见全部可能的扩展,从而使得在不论什么扩展情况下,系统的抽象底层不需改动;同一时候,因为能够从抽象底层导出一个或多个新的详细实现,能够改变系统的行为,因此系统设计对扩展是开放的 这就要求我们在设计的时候,要很清楚地了解用户需求,推断需求中包括的可能的变化,从而明白在什么情况下使用开闭原则。

    64621编辑于 2022-07-09
  • 来自专栏前端小而全的知识归纳

    js面试之14种设计模式 (6)

    前言 设计模式如果应用到项目中,可以实现代码的复用和解耦,提高代码质量。 本文主要介绍14种设计模式 写UI组件,封装框架必备 1.简单工厂模式 1.定义:又叫静态工厂方法,就是创建对象,并赋予属性和方法 2.应用:抽取类相同的属性和方法封装到对象上 3.代码: let 2.应用:简化复杂接口 3.代码: 外观模式 6.适配器模式 1.定义:将一个接口转换成客户端需要的接口而不需要去修改客户端代码,使得不兼容的代码可以一起工作 2.应用:适配函数参数 3.代码: 适配器模式 1.定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化 2.代码 桥接模式 9.模块方法模式 1.定义:定义一个模板,供以后传不同参数调用 2.代码: 模块方法模式 10.观察者模式 1.作用 2.代码 策略模式 13.访问模式 1.定义:通过继承封装一些该数据类型不具备的属性, 2.作用:让对象具备数组的操作方法 3.代码: 访问者模式 14.中介者模式 1.定义:设置一个中间层,处理对象之间的交互

    1.2K40发布于 2019-04-17
  • 来自专栏C/C++基础

    设计模式6)——抽象工厂模式(Abstract Factory Pattern,创建型)

    1.概述 使用设计模式可以提高代码的可复用性、可扩充性和可维护性。 拿我们在设计模式(四)——简单工厂模式设计模式(五)——工厂方法模式中学习的生产比萨的例子来举例。 virtual string getDescription() { return "芝加哥冷冻蛤蜊"; } }; 有了抽象产品类和具体产品类,现在来完成抽象工厂和具体工厂的设计和实现 假如各个抽象类的实现类之间不存在关联或约束,则使用多个独立的工厂来对产品进行创建,则更合适一点,比如我们在设计模式(五)——工厂方法模式中使用工厂方法模式来创建不同口味的比萨。 所以,在使用工厂模式时,只需要关心降低耦合度的目的是否达到了。 参考文献 [1]23种设计模式(3):抽象工厂模式 [2]设计模式(十三)抽象工厂模式

    70410发布于 2018-08-03
领券