为什么不使用工厂模式进行排序? [关闭]

2024-02-17

在运行时,根据用户行为和历史记录,我需要执行排序操作。就我而言,SortByDate/SortByDemand/SortByConsumption只会返回字符串,或者我们可以说 order by 子句(这可能很复杂)。

在大多数论坛中,我发现应该使用策略模式进行排序。

我在这里附上了策略模式的图像。 Util 类将调用三个类之一的对象,即 SortByDate/SortByDemand/SortByConsumation

因此,每次定义新的排序方法时,我都需要更改 util 类并定义新的策略。

但是,如果我使用工厂实现它,则 util 类只需要调用工厂,它将负责调用哪个类。所以我想我应该使用工厂。

然而,我读到策略是满足此类需求的最佳模式。为什么策略模式在这里更好?


你所做的不是工厂模式,而是两者的混合,这并不明确,而且在我看来是错误的。

在第二个示例中,类名是错误且令人困惑的。SortByDateFactory它的行为不像工厂(它不生产任何东西),但它的行为确实像策略。因此,它应该遵守策略接口。

另一方面,在第一个示例中,UtilClass行为就像你想要建造的工厂。因此,我建议保留第一个示例,但重命名UtilClass to SortStrategyFactory.

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

为什么不使用工厂模式进行排序? [关闭] 的相关文章

  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • 运行没有扩展名的 PHP 页面

    我想在 apache Web 服务器上运行我的 PHP 网页 而不需要 php扩大 所以我添加了以下代码 RewriteEngine on RewriteBase Rewritecond REQUEST URI NC RewriteRule
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • WooCommerce 使用 AJAX 设置购物车数量?

    我已经为此绞尽脑汁好几天了 需要一些指导 我正在为 WooCommerce 网站完全从头开始制作自定义主题 现在我正在尝试让购物车功能正常工作 我一直试图使用按钮 来更新购物车中产品的数量 对我来说问题似乎是WC 我在functions p
  • 使用 php 获取当前月份的最后 3 个月

    我想获取当前月份最近 3 个月的名称 例如当前月份是八月 所以 我想要六月 七月 八月这样的数据 我已经尝试过这段代码echo date F strtotime 3 months 它只返回六月 如何使用 php 获取当前月份的最后 3 个月
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa
  • 从 octobercms 中的非 ajax 表单获取输入值

    我正在尝试构建一个简单的搜索功能 下面是我的搜索表格
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • zip 文件的校验和

    我目前正在开发一个工具 它上传一组文件 然后使用 md5 校验和将文件与上一批上传的文件进行比较 并告诉您哪些文件已更改 对于常规文件 这工作正常 但某些上传的文件是 zip 存档 即使其中的文件相同 它们几乎总是会发生变化 有没有一种方法
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee

随机推荐

  • 连体网络显示 ValueError

    我正在使用 Siamese 网络来实现具有不同域的 2000 个功能 我想训练相似的特征对并测试不同的特征对 当我尝试拟合模型时遇到值错误 def get siamese conv unit input encoder models Seq
  • 如何使用 jQuery / Javascript 运行浏览器命令?

    我有一页 HTML 格式 有两个按钮 保存和打印 当用户单击 打印 时 它应该打印页面并当用户单击 保存 页面时 应打开该页面的 另存为 框 首选 Javascript jQuery 解决方案 对于打印 您可以使用window print
  • 使用对象检测算法进行 SageMaker 托管 Spot 训练

    我正在尝试使用新的托管点训练功能从现有模型开始训练对象检测模型 创建估计器时使用的参数如下 od model sagemaker estimator Estimator get image uri sagemaker Session bot
  • XHTML 合规性毫无意义吗?

    我现在正在构建一个网站 到目前为止 我已经痛苦地强制所有内容都兼容 并且它在浏览器中看起来几乎相同 不过 我开始实现一些第三方 免费的 javascript 它们可以执行添加属性等操作 例如 order 2 我可以解决这个问题 但这很痛苦
  • Python:在巨大的文本中替换单词

    我有一个巨大的文本和一个大约 10K 的单词列表 Python 中用其他单词替换文本中所有单词的最快方法是什么 编辑 文本大小 gt 1Gb 文本是人工编写的 并且 极度标记化 任何字母数字字符和任何其他单个符号都被分割成新的标记 单词数
  • 带节点的 OpenVPN,它是如何工作的?

    我可以使用以下 openVPN 命令轻松从终端连接到 VPN openvpn config conf ovpn 我需要使用 Javascript 连接到同一个 VPN 用于 selenium 测试 我已经安装了openvpn客户端与 NPM
  • 在可访问性方面, 相同吗?

    img src srcpath alt img src srcpath alt 也就是说 这些都被视为图像的空值吗alt文本 或者您必须确保alt 存在 You should使用alt 属性 空 alt 属性的每个示例为图像提供替代文本的规
  • heroku 错误:编译的 slug 大小:对于 Puppeteer 来说太大

    我的应用程序正在本地主机上运行 但是当我在heroku上部署时 puppeteer应用程序需要这个模块https github com jontewks puppeteer heroku buildpack https github com
  • Chrome 历史记录错误可能 - 执行 PRG,并且当再次导航到相同表单时 - 没有添加历史记录条目

    仅在 Chrome 中才会出现奇怪的后退按钮行为 我有两个页面 网格和表单场景 1 当从网格导航到表单时 一切都很好 网格被添加到历史记录中 2 当表单通过post发送到服务器时 我使用RedirectToAction再次重定向 302 到
  • 是否可以通过脚本禁用 Firefox JavaScript JIT?

    我们的网站有一个相当复杂的 JS 应用程序 该应用程序在最新的 Firefox 10 版本中失败 这是由于 JS 解释器中的一个错误导致变量返回 NULL 而实际上它们显然不是这样 此错误仅在 JIT 编译器处于活动状态时发生 而不是在禁用
  • 如何保持用户控件的纵横比?

    有谁知道如何保持 UserControl 的高 宽比 1 1 吗 例如 如果高度 gt 宽度 则宽度和高度将具有相同的尺寸 反之亦然 我不确定这是否有效 但是如果您为SizeChanged http msdn microsoft com e
  • Angular-ui 路由器同时获得两个活动状态

    我需要并行使用两种状态 一种用于我的页面 另一种用于具有多个子状态的模式 现在调用模态状态将清除我的页面 因为页面状态发生了变化 创建我的页面的子状态子级不是解决方案 因为模式将在多个页面上使用 Example stateProvider
  • Flutter - 容器中的顶部对齐文本

    我正在尝试离开 文本位于容器顶部 但即使FractionalOffset 1 0 0 0 the 文本在容器中间继续 可以做什么来离开 在容器的顶部 body new Card child new Column mainAxisSize M
  • 和 'a t 有区别吗?' aria-label='F# 中 t<'a> 和 'a t 有区别吗?'> F# 中 t<'a> 和 'a t 有区别吗?

    之间的含义有什么区别吗t lt a gt and a t在 F 中 即使在声明后它们也可以互换使用吗 没有区别 是的 即使在声明后它们也可以互换使用 但请注意F 组件设计指南 http fsharp org specs component
  • Strope字符编码问题

    我正在开发 XMPP 客户端 并且在发送 接收消息时遇到问题Strophe http strophe im JavaScript 版本 问题是包含 特殊 字符的消息 例如 如果我发送 我在这 外部客户端 即 iChat 将显示 我在这儿 s
  • C++ int a[n] 在 g++ 中工作但不能在 vs2008 中工作

    我有以下代码 int n cin gt gt n int numbers n 它在 Mac 上使用 g 我认为 通过 NetBeans 进行编译 而在 Windows 上则无法使用 VS2008 进行编译 为什么让它适用于每个编译器如此困难
  • SQL Server 2k5内存消耗?

    我有一个正在运行 sql server 的开发虚拟机以及我的堆栈的一些其他应用程序 我发现其他应用程序的性能非常糟糕 经过一番挖掘后 SQL Server 占用了内存 经过快速的网络搜索后 我发现默认情况下 它会消耗尽可能多的内存来缓存数据
  • Java 反射,getMethod()

    我正在研究 Java 反射的基础知识并观察类方法的信息 我需要获取一个与 getMethod 函数所描述的规范相匹配的方法 然而 当我这样做时 我得到一个 NoSuchMethodException 我希望你能告诉我为什么我的实现不正确 s
  • 如何删除旧版 Web 应用程序中的 CSS 意大利面?

    在开发了几个大型 Web 应用程序并看到没有清晰结构的巨大样式表之后 我真的很想知道人们是否找到了方法来保持大型复杂 Web 应用程序的 CSS 干净 如何从遗留的 混乱的 CSS 转向干净的 漂亮的级联 DRY 样式表 我目前正在开发的应
  • 为什么不使用工厂模式进行排序? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi