输入示例:
<pdf>
<page 1><addressbox><value>adress 1</value></addressbox></page>
<page 2><addressbox><value>adress 2</value></addressbox></page>
<page 3><addressbox><value>adress 2</value></addressbox></page>
<page 4><addressbox><value>adress 2</value></addressbox></page>
<page 5><addressbox><value>adress 3</value></addressbox></page>
<page 6><addressbox><value></value></addressbox></page>
<page 7><addressbox><value>adress 3</value></addressbox></page>
<page 8><addressbox><value>adress 4</value></addressbox></page>
<page 9><addressbox><value>i am not a adress</value></addressbox></page>
<page 10>
<addressbox>
<value>adress 6</value>
<collect>true</collect>
</addressbox>
</page>
<page 11><addressbox><value>address 7</value></addressbox></page>
<page 12><addressbox><value>address 2</value></addressbox></page>
</pdf>
</code>
目标: 将页面收集到逻辑单元
定义: 如果字符串的值以&#34;地址&#34;开头。然后它是一个有效的地址,否则不是。
规则:
结果应如下所示:
<unit>
<unit 1>page1</unit>
<unit 2>page2, page3, page4</unit>
<unit 3>page5, page6, page7</unit>
<unit 4>page8</unit>
<unit 5>page9</unit>
<unit 6>page10, page11</unit>
<unit 7>page12</unit>
</unit>
我想解决设计模式的问题,因为规则可能会略有改变。 得到了模式访问者,装饰者,复合物和责任链,但没有找到任何东西。
您会推荐哪种模式?
答案 0 :(得分:1)
您需要使用状态设计模式。我将简要解释一下,然后附上一张不言自明的白板图 -
(要获得有关如何实施状态模式的完整详细信息,请参阅我的博客文章 - http://www.javabrahman.com/design-patterns/state-design-pattern-in-java/)