当前位置: 首页 > 知识库问答 >
问题:

大型配置的责任链

陆飞鸿
2023-03-14

我正在为我的管道使用责任链设计模式。我发现的一个问题是,随着我添加更多的链,配置对象变得越来越大。从本质上说,我的config对象正在变成一个巨大的单例。有没有一个有效的方法来处理这种情况?

详情:

我当前的设置是

handler.next = handler2
handler2.next = handler3
...

并且我通过向其传递一个配置对象来使用该链。

handler.HandleRequest(config)

config对象具有处理程序所需的所有配置信息,因此,随着我添加更多的链,它变得越来越大。

可能的解决方案:

在这篇文章中,最好的答案是使用依赖注入。

哪些设计模式可以应用于配置设置问题?

但是,我不确定如何在责任设计链上使用依赖注入,而不实质性地改变设计。

在这个问题上有人能帮我吗?谢谢!

共有1个答案

樊宏邈
2023-03-14

我觉得你们在一起做一些不属于一起的事情。

如果需要提取应用程序不同部分的设置/配置值,为什么要尝试在一个地方全部读取?

对于每个需要某种设置的组件,我更喜欢小的“设置对象”。我通常从包含所有硬编码默认值的对象开始,并在必要时从基本设置派生。派生对象可以从任意源读取(大多数时候是app.config文件,但我也使用了数据库和Web服务)。

这是一篇更详细描述设置对象的博文。

 类似资料:
  • 主要内容:介绍,实现,AbstractLogger.java,ConsoleLogger.java,ErrorLogger.java,FileLogger.java,ChainPatternDemo.java顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求

  • 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 介绍 意图:避免请求发送者与接收者耦合在一起,让多个对象

  • 简介 责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。 以下的日志类(logging)例子演示了该模式。 每一个logging handler首先决定是否需要在该层做处理,然后将控制传递到下一个log

  • 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 介绍 意图:避免请求发送者与接收者耦合在一起,让多个对象

  • 责任链模式 责任链模式是很实用的一种实际方法。举个例子来说,我们平常在公司里面难免不了报销流程。但是,我们知道公司里面每一级的领导的报批额度是不一样的。比如说,科长的额度是1000元,部长是10000元,总经理是10万元。 那么这个时候,我们应该怎么设计呢?其实可以这么理解。比如说,有人来找领导报销费用了,那么领导可以自己先看看自己能不能报。如果费用可以顺利报下来当然最好,可是万一报不下来呢?那就

  • 一、定义 责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 二、示例 假设这么一个场景: 我们负责一个售卖手机的电商网站,经过分别缴纳500元定金和200元定金的两轮预定后,到了正式购买阶段。针对预定用户实行优惠,支付过500元定金的用户会收到100元的商城优惠券,支付过200元定金的用户会