gpt4 book ai didi

oop - 这个设计模式的名字是什么?

转载 作者:行者123 更新时间:2023-12-01 16:35:06 26 4
gpt4 key购买 nike

假设我需要将应用程序中的文本保存到文件中,但允许用户使用多种格式(.pdf.word.txt, ...) 进行选择。

第一种方法可能是:

if (extension == ".pdf")
ExportToPdf(file);
else if (extension == ".txt")
ExportToTxt(file);
...

但我通常这样封装上面的内容:

abstract class Writer
{
abstract bool CanWriteTo(string file);
abstract void Write(string text, string file);
}

class WritersHandler
{
List<Writer> _writers = ... //All writers here

public void Write(string text, string file)
{
foreach (var writer in _writers)
{
if (writer.CanWriteTo(file)
{
writer.Write(text, file);
return;
{
}
throw new Exception("...");
}
}

使用它,如果我需要添加新的扩展/格式,我所要做的就是为该编写器创建一个新类(继承自 Writer)并实现 CanWriteTo (..)Write(..) 方法,并将该新编写器添加到 WritersHandler 中的编写器列表中(可能添加一个方法 添加(Writer w) 或手动添加,但这不是现在的重点)。

我也在其他情况下使用它。

我的问题是:

这个模式的名字是什么?(也许它是一个模式的修改,不知道)。

最佳答案

这是 Chain Of Responsibility .
它基本上定义了一系列处理对象,如果当前处理对象无法处理,则所提供的命令将传递到下一个处理对象。

关于oop - 这个设计模式的名字是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5013502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com