工厂与职责链模式

这篇博客探讨了如何将工厂模式与职责链模式结合使用。通过工厂模式,可以根据输入信息动态创建合适的处理类,而职责链模式则用于在多个处理器中选择适当的处理者,避免复杂的if-else或switch结构。作者描述了一个处理波形数据的例子,其中每个算法处理器都有自己的参数和行为。通过定义职责链接口并实现,处理器节点可以依次传递处理请求,直到找到正确处理者。工厂类则负责将所有处理器链接起来,形成职责链。这种组合可以提高代码的可读性和可扩展性。
摘要由CSDN通过智能技术生成

工厂与职责链模式

        这周做的一个模块把工厂模式与职责链模式糅合在一起了,工厂模式用来解决通过解析输入的信息返回一个符合的类,职责链模式则负责选取的过程。
        工厂模式应该是最简单也可能用的最多的模式,用来根据需要返回特定的类,职责链用于从多个处理类中选取一个合适的类来处理,根据链依次传递,直到正确处理为止,处理完后就沿途返回。
        问题定义: 有一大堆的算法,算法是用来处理波形数据的(一个大的数组),每个算法处理器有自己的参数与处理行为,因此为每种算法定义一个处理器,负责参数输入与处理,以及参数载入与输出,用于记住算法处理器的状态,要利用职责链模式,必须定义职责链基类或接口,这里采用基类更合适,因为可以提供一些基础代码,以免每个职责内都写同样的代码。
      职责链跟链表类似,每个节点都知道下个节点是什么,至于上个节点是什么,没必要知道,因此定义以下基类,这里只给出接口。
public interface IChain
{
       void AddToChain(IChain chain);
       void Invoke(....params); //根据需要写参数列表,里面是处理逻辑,参数列表中可多加一个isprocess,
                                          //用于表示是否已经处理了,得到了处理就沿途返回,以免处理了还传递下去
       bool HasChain{ get; }
       IChain GetChain{ get; }
}

然后使得每个处理器都出继承子IChain接口,然后建立一个工厂类,链接所有处理器,然后从职责链传入需要的参数,就可正确处理了。
     使用职责链模式可以减少判断分支结构的使用,if,switch语句。使用工厂模式可以免去该如何从多个可用类型创建需要的类型。
     比如对于一个文件,根据文件类型(扩展名)的不同,处理方式就不同,图片,音乐,文本等多种类型,这样就可以为每种类型的处理过程创建一个职责,串成职责链,通过传入文件名,依次在职责链中传递知道正确处理为止。
  
     设计模式应用的好,可以提高代码的可读性和可申缩性,可惜我虽然看了好几遍,能用好的模式也没多少,数的出来,有待加强。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值