缓存机制是在工厂类内部还是外部更好?

2023-12-22

我的问题与严格的语言无关,它更多的是一个通用的编程概念。

如果我有一个 Factory 类,它有一个返回 Parser 对象的方法,并且我知道这些解析器类不需要在每个迭代周期实例化一次以上(当然,在工厂之外)。

就使用和对象分离而言,最好为工厂内部的所有实例化解析器创建缓存机制,即:在方法调用期间,还是在方法调用之外,当方法已经被调用时?

提前致谢。


也许你可以为你的应用程序定义一个接口Factory,然后有多个实现 - 一个实现可以在内部执行缓存以保证Parser类仅实例化一次。另一种实现可以不执行缓存,只提供新的Parser每当有事情需要时就会反对。

不管怎样,我建议你试着把这个逻辑保留在你的内心深处。Factory实现并使应用程序的其余部分与Factory界面。这样,如果您稍后决定不想缓存任何内容或者需要更改缓存的方式Parser被实例化后,您只有一个对象创建点 - 在Factory。这使得改变构建方式变得非常容易Parser对象,而不必更改应用程序中需要新对象的每个部分Parser.

再说一次 - 如果您创建缓存机制以在外部运行Factory,那么这些机制将遍及您的代码,因为每当您想要获得新的时,您都必须使用它们Parser。如果您稍后决定更改缓存机制,您将不得不接触大量代码,但如果您在Factory,你只需要改变Factory执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

缓存机制是在工厂类内部还是外部更好? 的相关文章

  • 使用 JDBC 获取 Oracle 11g 的最后插入 ID

    我是使用 Oracle 的新手 所以我将放弃之前已经回答过的内容这个问题 https stackoverflow com questions 3131064 get id of last inserted record in oracle
  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • “java.io.IOException:连接超时”和“SocketTimeoutException:读取超时”之间有什么区别

    如果我设置一个套接字 SoTimeout 并从中读取 当读取时间超过超时限制时 我会收到 SocketTimeoutException 读取超时 这是我的例子中的堆栈 java net SocketTimeoutException Read
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • Reactive Spring 不支持 HttpServletRequest 作为 REST 端点中的参数?

    我创建了一个 RestController 如下所示 RestController public class GreetingController RequestMapping value greetings method RequestM
  • 删除优先级队列的尾部元素

    如何删除优先级队列的尾部元素 我正在尝试使用优先级队列实现波束搜索 一旦优先级队列已满 我想删除最后一个元素 优先级最低的元素 Thanks 没有简单的方法 将元素从原始元素复制到新元素 最后一个除外 PriorityQueue remov
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 在 Java 中通过 XSLT 分解 XML

    我需要转换具有嵌套 分层 表单结构的大型 XML 文件
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib

随机推荐

  • 如何使用 d3.js 更新轴

    我正在尝试在图表上显示不同的数据 用户可以单击单选按钮来更改显示的数据 我正在使用 气泡图 来呈现数据 对于每种类型的数据 我需要更新 Y 轴 域不同 这是我现在所做的 图表初始化 var svg d3 select body main c
  • 使用 json.net 反序列化没有类型信息的多态 json 类

    This 图像 API https api imgur com endpoints gallery调用返回一个包含两者的列表画廊图片 and 画廊相册以 JSON 表示的类 鉴于没有 type 属性告诉反序列化器要表示哪个类 我看不到如何使
  • Android Hello, Gallery教程——“R.styleable无法解析”

    在制作 Hello Gallery 教程 示例应用程序时 之后按照说明进行操作 http developer android com guide tutorials views hello gallery html在网站上 Eclipse
  • 避免并行继承层次结构

    我有两个并行的继承链 Vehicle lt Car lt Truck lt etc VehicleXMLFormatter lt CarXMLFormatter lt TruckXMLFormatter lt etc 我的经验是 随着并行继
  • Control-C 在 Windows 7 上的 git bash 中杀死 Ipython

    在 Linux 上摸爬滚打了这么多年之后 我又回到了可怕的 Windows 环境 我使用 Ipython 并在 git bash 中启动它 我很难使用其他东西 因为我的办公室的环境配置为使用它 因此 当我启动 Ipython 并且错误地启动
  • iPhone OpenGL ES 2.0 与 Cocos2D 混合给出了意想不到的结果

    我有非常简单的 CCScene 只有 1 个 CCLayer 包含 采用标准混合模式的 CCSprite 背景 CCRenderTexture 绘制画笔 其精灵附加到背景精灵上方的根 CCLayer bgSprite CCSprite sp
  • JPA多对多关系未插入生成的表中

    我的项目中有多对多关系 虽然我可以在两个实体表中写入 但关系表没有写入任何内容 以下是我如何使用 JPA 注释来声明这一点 教授 java Entity Table name Professor public class Professor
  • 无法在 ASP.Net MVC 3 项目中使用实体框架保存更改

    学习 asp net mvc 3 EF 代码优先 我对两者都是新手 我的例子很简单 但我仍然无法使它工作 缺少一些简单而明显的东西 我有一堂课 public class Product HiddenInput DisplayValue fa
  • Excel VBA VLookup - 错误 13 - “类型不匹配”

    我正在开发一个 Excel VBA 宏 它从另一张工作表获取客户的电子邮件 我从 VLookup 中收到错误 13 类型不匹配 For Each c In Range D3 D130 Cells If c gt 500 Then Dim e
  • 如何对 istream/istringstream 使用“固定”浮点字段?

    C 有一个名为 fixed 的 I O 操纵器 用于以固定 非科学 形式输入 输出浮点数 它对于输出工作正常 但我不明白如何让输入正常工作 考虑这个例子 include
  • JS - Onload 事件未触发[重复]

    这个问题在这里已经有答案了 这会触发 onload 事件 p Demo p 这不会触发 onload 事件 p Demo p 在第二个示例中 为什么事件没有触发 支持的元素onload are img
  • Mongoose 私人聊天消息模型

    我正在尝试将用户之间的私人消息添加到我的数据模型中 我一直在两种可能的方法之间来回选择 1 每个用户都有一个 user id chat id 对的数组 它们对应于他们正在参与的聊天 聊天模型仅存储 chat id 和消息数组 2 根本不存储
  • 处理 Windows 服务停止/暂停请求期间的延迟

    我有一个源自的 Windows 服务类ServiceBase使用一个System Timers Timer频繁运行代码 处理程序OnStop and OnPause使用计时器线程的一些信号来检查计时器是否仍在运行并等待其完成 在这种情况下
  • MySQL时间戳自动更新性能

    我们正在考虑向 mysql 表添加一个自动更新的时间戳字段 以跟踪上次更新行的时间 如 mysql 文档中所述 https dev mysql com doc refman 8 0 en timestamp initialization h
  • 如何允许授予对上传到 AWS S3 的对象的公共读取访问权限?

    我创建了一个策略 允许访问我的帐户中的单个 S3 存储桶 然后 我创建了一个仅包含此策略的组和一个属于该组的用户 用户可以按预期查看 删除文件并将文件上传到存储桶 然而 用户似乎无法授予对上传文件的公共读取权限 当 的时候授予对此对象的公共
  • 为傻瓜定制的等待

    In 异步 等待常见问题解答 http blogs msdn com b pfxteam archive 2012 04 12 10293335 aspx 斯蒂芬 图布 说 An 等待的是公开的任何类型GetAwaiter返回有效的方法aw
  • 使用字符串动态创建 (LLBLGen) Linq 查询

    我们需要生成在编码期间 设计时 100 未知的 LINQ 查询 这是因为我们的框架中的逻辑可用 该框架与任何数据项目 100 分离 对于数据 我们使用 LLBLGen 生成的数据访问代码 通常 通过使用 DLL 上的调用 我们向框架指定 而
  • T4模板VS2010获取主机组装

    我想获得 T4 模板所在项目的汇编的参考 我知道我可以通过以下方式获取项目路径Host ResolveAssemblyReference ProjectDir 我也许可以添加bin debug projectName dll因为我的程序集名
  • c# mvc:将数据从视图持久保存到控制器,然后通过 List 的单个对象

    我正在与一个View返回List
  • 缓存机制是在工厂类内部还是外部更好?

    我的问题与严格的语言无关 它更多的是一个通用的编程概念 如果我有一个 Factory 类 它有一个返回 Parser 对象的方法 并且我知道这些解析器类不需要在每个迭代周期实例化一次以上 当然 在工厂之外 就使用和对象分离而言 最好为工厂内