gpt4 book ai didi

design-patterns - 我的设计中需要访客模式吗

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:21 25 4
gpt4 key购买 nike

我正在为学习目的设计 HTML 解析器。我首先创建整体设计的地方。

存储 HTML 元素的数据结构。

基础 : HtmlBaseElement

派生:HTMLElement、PElement、HtagElement、ImgElement、BodyElement、StrongElement

基本上,我将为 HTML 中的每种元素创建一个派生类。

我需要将这个 HTML 文件写回一个文件,并允许用户在已解析的 HTML 文件中添加该元素。

这就是我的想法:

第一种方法:

  1. 创建一个BaseVisitor,它对每种类型的元素都有访问功能。

  2. 创建派生访问者类 WriteHtmlVisitor 以编写整个文件,该文件将访问 HTML 数据结构中的每个元素。

第二种方法:

我还可以使用一个类 WriteHtmlFile ,具有 HTMLElement 的对象,然后使用所有元素的 getter 编写它。

编写 HTML 文件和在文件中添加新元素的最佳方式是什么。

我只是在寻找建议,因为这是在设计阶段。

谢谢。

最佳答案

是的,您的访问者布局会起作用,并且在我们一直使用的 IntelliJ IDEA 插件中。

举一个具体的例子:在 IDEA 中,我们在编辑器中有一种代码的抽象语法树。使用递归 访问器,您可以将每个元素转换为其字符串表示,并将工作分配给许多小且易于理解的方法。每个 visitXXX 只是将一小部分转换为字符串并递归调用 visit 方法。

优点是易于理解和调试。我经历过的唯一缺点是你需要一个访问基类中所有元素类型的方法。但是,一旦设置好,它就会像魅力一样发挥作用。

我可以给你 Java 代码让你看,虽然它是特定于 IDEA 的,但它应该足够清晰,可以理解它。 Here is the base class为访问者定义所有可能元素的方法。和 here is an example您的想法:将元素转换为字符串表示形式的访问者。

希望这对您有所帮助,您不介意 Java 代码。

关于design-patterns - 我的设计中需要访客模式吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46486025/

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