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

    Head First设计模式——模式和解释器模式

    模式:如果让某个类的一个实例能用来提供许多“虚拟实例”,就使用模式。 在一个设计房子的平台中,周围要加上一些树,树有一个坐标XY坐标位置,而且可以根据树的年龄动态将自己绘制出来。 使用一个树实例和一个客户对象来维护“所有”树的状态,这就是模式。 设计类图: ? 用途和缺点: 1、当一个类有许多的实例,而这些实例能够被统一方法控制,我们就可以使用模式。 2、的缺点在于一旦你实现了它,单个实例无法拥有独立而不同的行为。 一般书中讲解的模式不一定在我们使用的时候需要完全照搬,可以多些对应的解释器类都是合理的。 类图: ? 3、当语法数目太大太复杂时,这个模式会变得繁杂。

    53430发布于 2020-08-11
  • 来自专栏zaking's

    JavaScript 模式》读书笔记(3)— 字面和构造函数3

    // 一个输入JSON字符串 var jstr = '{"name":"value","some":[1,2,3]}'; // 反模式 var data = eval('(' + jstr + ')' 2、使用正则表达式字面。 正则表达式字面语法 正则表达式字面量表示法使用了斜杠(分隔号“/”)来包装用于匹配的正则表达式模式。 在第二个斜杠之后,可以将该模式修改为不加引号的字母形式: g——全局匹配 m——多行 i——大小写敏感匹配   模式修改器可以允许任何顺序或者组合方式出现:var re = /pattern/gmi; 我们这篇文章整体的内容就结束了,我们主要学习了对象字面、数组字面、正则表达式字面、以及构造函数和new、还有一些其他的内置构造函数比如不建议使用的String()、Number()、Boolean

    87520发布于 2020-03-26
  • 来自专栏全栈程序员必看

    《JavaScript 模式》读书笔记(3)— 字面和构造函数3

    // 一个输入JSON字符串 var jstr = '{"name":"value","some":[1,2,3]}'; // 反模式 var data = eval('(' + jstr + ')' 2、使用正则表达式字面。 正则表达式字面语法 正则表达式字面量表示法使用了斜杠(分隔号“/”)来包装用于匹配的正则表达式模式。 在第二个斜杠之后,可以将该模式修改为不加引号的字母形式: g——全局匹配 m——多行 i——大小写敏感匹配   模式修改器可以允许任何顺序或者组合方式出现:var re = /pattern/gmi; 我们这篇文章整体的内容就结束了,我们主要学习了对象字面、数组字面、正则表达式字面、以及构造函数和new、还有一些其他的内置构造函数比如不建议使用的String()、Number()、Boolean

    75540编辑于 2022-07-21
  • 来自专栏全栈程序员必看

    《JavaScript 模式》读书笔记(3)— 字面和构造函数2

    上一篇啊,我们聊了聊字面对象和自定义构造函数。这一篇,我们继续,来聊聊new和数组字面。 三、强制使用new的模式 要知道,构造函数,只是一个普通的函数,只不过它却是以new的方式调用。 请使用数组字面来创建一个数组! // 具有一个元素的数组 var a = [3]; console.log(a.length); // 1 console.log(a[0]); // 3 // 具有三个元素的数组 var a = new Array(3); console.log(a.length); // 3 console.log(typeof a[0]); // "undefined"   上面的例子,当向数组构造函数传递一个整数时 这意味着new Array(3)这个语句创建了一个长度为3的数组,但是该数组中并没有实际的元素。   

    46830编辑于 2022-07-21
  • 来自专栏zaking's

    《JavaScript 模式》读书笔记(3)— 字面和构造函数1

    对象字面模式可以使您在创建对象时向其添加函数: var dog = { name:"Benji", getName:function() { return this.name 3、用冒号来分隔属性的名称和属性的值。     4、当给变量赋值时,请不要忘记右大括号“}”后的分号。 来自构造函数的对象 我们先来看一下,如何创建一个对象: // 第一种方法:使用字面: var car = {goes:'far'}; // 另一种方法:使用内置构造函数-这是一个反模式,不要应用 优先选择字面模式创建对象的另一个原因在于:它强调了该对象仅仅是一个可变哈希映射,而不是从对象中提取的属性或方法。 与使用object构造函数相对,使用字面的另一个原因在于它并没有作用域解析。 3、新创建的对象由this所引用,并且最后隐式的返回this(如果没有显示的返回其它对象)。   

    78820发布于 2020-03-25
  • 来自专栏全栈程序员必看

    《JavaScript 模式》读书笔记(3)— 字面和构造函数1

    对象字面模式可以使您在创建对象时向其添加函数: var dog = { name:"Benji", getName:function() { return this.name 3、用冒号来分隔属性的名称和属性的值。     4、当给变量赋值时,请不要忘记右大括号“}”后的分号。 来自构造函数的对象 我们先来看一下,如何创建一个对象: // 第一种方法:使用字面: var car = {goes:'far'}; // 另一种方法:使用内置构造函数-这是一个反模式,不要应用 优先选择字面模式创建对象的另一个原因在于:它强调了该对象仅仅是一个可变哈希映射,而不是从对象中提取的属性或方法。 与使用object构造函数相对,使用字面的另一个原因在于它并没有作用域解析。 3、新创建的对象由this所引用,并且最后隐式的返回this(如果没有显示的返回其它对象)。   

    40030编辑于 2022-07-21
  • 来自专栏zaking's

    JavaScript 模式》读书笔记(3)— 字面和构造函数2

      上一篇啊,我们聊了聊字面对象和自定义构造函数。这一篇,我们继续,来聊聊new和数组字面。 三、强制使用new的模式 要知道,构造函数,只是一个普通的函数,只不过它却是以new的方式调用。 请使用数组字面来创建一个数组! // 具有一个元素的数组 var a = [3]; console.log(a.length); // 1 console.log(a[0]); // 3 // 具有三个元素的数组 var a = new Array(3); console.log(a.length); // 3 console.log(typeof a[0]); // "undefined"   上面的例子,当向数组构造函数传递一个整数时 这意味着new Array(3)这个语句创建了一个长度为3的数组,但是该数组中并没有实际的元素。   

    69530发布于 2020-03-25
  • 来自专栏JMCui

    设计模式 — 终章.

    ~ 4、模式(Flyweight Pattern) 概念:让某个类的一个实例能用来提供许多“虚拟实例”。 模式主要用于减少创建对象的数量,以减少内存占用和提高性能。模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 角色:  1. 抽象(Flyweight):定义了对对象外部状态的操作接口。使用该接口,可在Client中修改对象的外部状态。  2. 可共享内部状态的具体(ConcreteFlyweight):维护可以共享的内部状态;实现操作外部状态的接口。  3. 工厂(FlyweightFactory):负责管理对象,形成一个对象池,提供对取出对象的方法,取出时若池中对象足够,就直接返回,若对象不足则创建后返回。 UML: ?

    49920发布于 2019-03-06
  • 来自专栏枕边书

    设计模式,Lets “Go”! (下)

    (中), 继续更新设计模式,今天介绍的设计模式有责任链模式模式、解释器模式、中介者模式、备忘录模式、原型模式和访问者模式; 文章对设计模式的特点和使用场景进行了总结,每个设计模式分配的篇幅较少,给了解过设计模式的作为速查 报销不了的金额交给经理,而经理将自己处理不了的给CEO处理; 张三要报销200元,leader就能批准; 李四要报销8000元,leader报销不了,就交给经理,经理也处理不了,最后交给CEO报销; 模式 (Flyweight) 介绍 模式:使用一个对象来存储和模拟多个虚拟对象,大大减少多个对象的内存占用。 实例化多个相似实例会占用较多内存空间,模式使用一个对象类变量保存多个对象的属性,以一个对象控制多个对象; 模式可以极大地减少内存占用,也可以方便对多个对象进行统一管理; 实例一旦实现了模式, 包括:装饰者模式、适配器模式、外观模式、桥接模式、组合模式、代理者模式模式。 设计模式的目标,是用来解决通用问题的。

    83360发布于 2018-01-04
  • 来自专栏青益云记

    「  3.JavaScript字面与变量  」

    DOCTYPE html> <head> <meta charset="utf-8"> <title>字面和变量</title> <script type="text/javascript "> /* 字面,都是一些不可改变的值 比如:1 2 3 4 5 字面都是可以直接使用的,但是我们不会直接使用字面 变量,变量可以用来保存字面,而且变量的值是可以随便改变的 变量更方便我们使用,所以再开发中都是通过变量去保存一个字面 , 而很少直接使用字面 */ // alert("12332123123123"); //声明变量

    42120编辑于 2023-01-03
  • 来自专栏跟着飞哥学编程(全栈联盟社区)

    【设计模式】行为型模式-第 3 章第 3 讲【解释器模式

    一、目的 解释器模式定义语法的表示以及该语法的对应解释。 二、实现 解释器模式使用组合模式来定义对象结构的内部表示。 例如表达“三加四”时,写作“3 4 +”,而不是“3 + 4”。 如果有多个操作符,操作符置于第二个操作数的后面,所以常规中缀记法的“3 - 4 + 5”在逆波兰记法中写作“3 4 - 5 +”:先3减去4,再加上5。 逆波兰表达式的解释器一般是基于堆栈的。 3 2 -,表示3-2的运算,这里由于栈是先进后出,所以pop先取出2(在栈的左边),3(栈的的右边) this.left = left; this.right = right; } @ ("4 3 - 2 +")); } }  三、解释器模式的适用情况和应用案例 解释器模式适用于表达式被解释并转换为其内部表示的情况。

    51320编辑于 2022-12-02
  • 来自专栏关于Java学习@宁在春

    Java设计模式-工厂模式3)抽象工厂模式

    在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗。 Java设计模式-工厂模式3)抽象工厂模式 一、前言 1)概述: 2)角色概述: 3)前文 二、代码实现 1)抽象产品及具体产品: 2)抽象工厂 及具体工厂 3)测试 4)优缺点: 5)使用场景: 三 抽象工厂模式相对于工厂方法模式来说,就是工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂类,而抽象工厂模式是多个产品系列一个工厂类。 3)前文 在这里再次上一篇文章中Java设计模式-工厂模式(2)工厂方法模式 中出现的问题再做一次扩展。 原问题是: 需求:设计一个咖啡店点餐系统。 LatteCoffee(); } @Override public Dessert createDessert() { return new Tiramisu(); } } 3

    46130编辑于 2022-10-31
  • 来自专栏CVer

    支持Java 轻模式

    新的远程容器教程 - 了解如何附加到容器并创建新的开发容器 包括:1)附加到容器 - 附加到已运行的 Docker 容器;2)创建开发容器-创建与开发环境匹配的自定义容器;3)devcontainer.json 参考 - 通过 devcontainer.json 属性控制容器的创建 Java 轻模式 - 更快地开始使用 Java 源文件 Java 语言支持扩展现在支持轻模式,适用于想要快速使用 Java 下载1 在CVer公众号后台回复:PRML,即可下载758页《模式识别和机器学习》PRML电子书和源码。该书是机器学习领域中的第一本教科书,全面涵盖了该领域重要的知识点。

    85810发布于 2020-08-21
  • 来自专栏爪哇缪斯

    趣解设计模式之《小王设计的疫苗管理平台系统》

    这个解决方式就是我们今天要介绍的设计模——享元模式/模式。 一、模式定义 享元模式/模式(flyweight Pattern) 享元模式是池技术的重要实现方式,其定义如下:使用共享对象可以有效地支持大量的细粒度的对象。 二、模式类图 根据上面的小故事,我们来绘制出相关模式的类图。 pool.containsKey(key)) return null; return pool.get(key); } } 模式测试类 趣解设计模式之《同学们,交作业啦!》 趣解设计模式之《小王与他的Apple商店》 趣解设计模式之《珍爱生命,远离只狼》

    30130编辑于 2023-10-06
  • 来自专栏技术客栈

    Java设计模式3)建造者模式

    前言 在软件开发的世界里,设计模式如同一本精妙的编码诗集,已经成为一种标准的编程实践。在Java编程中,设计模式很重要。 本人将制作一个关于Java设计模式的系列文章,总共23种设计模式将以一篇一篇文章讲解,代码笔记已开源:Gitee点击跳转。在上一篇《Java设计模式(2)工厂模式》文章中,我们介绍了工厂模式。 本文是这个系列的第三篇章,我们将讲解一下建造者模式的实现方式、应用场景以及它的用途。 建造者模式 建造者模式是一种创建型设计模式,其主要目的是将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的对象 应用场景 当一个对象的构建过程较为复杂,包含多个组件或者步骤,而且需要根据不同的需求构建不同表示时 --------------"); Computer computer = new Build() .setCpu("AMD Ryzen 77800 X3D

    22810编辑于 2024-04-18
  • 来自专栏Lvshen的技术小屋

    设计模式3之抽象工厂模式

    抽象工厂模式定义 工厂方法模式中工厂只负责同类产品的生产。比如电视机工厂不应该生产汽车。 然而现实生活中有很多综合型的工厂,比如有些电视工厂不仅生产电视机,还会生产与之配套的机顶盒。 那么抽象工厂模式随之诞生,这种模式将考虑多种类型产品的生产。 我们总结下: 工厂方法模式只考虑成产同一等级级的产品 抽象方法模式考虑生产多等级的产品,可以说是工厂方法模式的升级版 如上图,小米音响和苹果音响为同一个产品。而小米手机和小米音响为同一产品族。 使用场景 那么什么情况下可以使用抽象工厂模式? 使用抽象工厂模式一般要满足以下条件。 系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。 抽象工厂模式同工厂方法模式结构一样,需要抽象产品,抽象工厂,具体产品,具体工厂4部分组成。

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

    java设计模式(3)-建造者模式

    上一篇推文写了单例设计模式,这篇文章介绍和工厂模式类似的建造者模式,实际开发中,要根据情况使用不同的设计模式 建造者模式 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理, 用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。 我们看一下代码:和前面写的工厂模式一样,一个Send接口,两个实现类MailSend和SmsSend。 new Builder(); builder.produceMailSend(10); builder.produceSmsSend(10) } } 总结 建造者模式将很多功能集成到一个类里 所以与工程模式的区别就是:工厂模式关注的是创建单个产品,而建造者模式则关注创建符合对象,多个部分。因此,是选择工厂模式还是建造者模式,依实际情况而定。

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

    Python设计模式3):抽象工厂模式

    导言 为了说明抽象工厂模式引入的背景首先回忆起Python设计模式(2):工厂方法模式类图。从图中可以看到,在工厂方法模式中针对一组产品类构造了另外一组工厂类,并且工厂类与产品类有相同的结构。 假如现在有两组以上具有相同结构的产品类,是否还可以使用工厂方法模式呢?例如有3组产品,鞋(Shoes)、西装(Suit)和领带(Tie),如图所示,每类产品都分为男女两类。 这种方法有一个缺点,就是需要至少3个Creator层次类。这种办法是可行的,但是太麻烦。 解决方案2:以上3个层次类具有相同的结构,可以改造以上所述的工厂方法模式,使得只需要一个工厂层次类就可以担负起创建3组产品对象的责任。设计图如图所示。 ? 第二种解决方案就是将要讲述的抽象工厂模式(Abstract Factory Pattern),包含两个产品类的的抽象工厂模式设计类图如图所示。 ? 抽象工厂模式与工厂方法模式有相似的概念。

    1.5K20发布于 2019-07-26
  • 来自专栏学习笔记ol

    小谈设计模式3)—策略模式

    小谈设计模式3)—策略模式 专栏介绍 主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。 策略模式 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列的算法,将每个算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户端。 在客户端使用策略模式时,通常需要与环境类进行交互。 抽象策略(Strategy) 抽象策略类是策略模式的接口或抽象类,定义了具体策略类所必须实现的算法。 通过使用策略模式,可以将算法的定义和使用分离,提高代码的灵活性、可维护性和可扩展性。 核心思想 策略模式的核心思想是将算法的定义和使用分离。 然而,策略模式也会增加类的数量,增加客户端的复杂性,并且需要考虑策略的选择逻辑。在使用策略模式时,需要权衡其优点和缺点,选择合适的使用方式。

    45140编辑于 2023-10-11
  • 来自专栏DrugOne

    用几何和物理改进E(3)等变消息传递

    在本文中,作者展示出用更多几何和物理来丰富节点属性的潜力。 这篇论文的主要贡献有以下四点: 对等变图网络进行扩展,使得节点和边属性不再局限于标量。 用于可控向量场的一类新的激活函数,基于可控节点属性和可控多层感知机的极少,这类激活函数允许将几何和物理注入到节点更新中。 通过非线性卷积的定义对不同的等变图神经网络有统一的见解。 如表3所示,随着可控特征向量阶数提高,性能也随之提高,对于小的cutoff radius尤其明显。 表2和表3共同表明SEGNNs表现优于架构可比的EGNN模型,同时从中剥离出注意力模块并且将图的连接性进行缩减。 SEGNNs是第一个允许几何和物理对于节点更新进行控制的网络,同时作者还介绍了一类新的等变激活函数。最后作者将SEGNNs运用到大量不同的任务中。

    1K10编辑于 2021-12-16
领券