按功能的文件夹和装饰器设计模式

时间:2018-09-22 02:06:46

标签: java decorator directory-structure

按功能和装饰器模式折叠

如果我有一个关联的Parser的{​​{1}},则当我浏览Stream时,我将随着Tokens移动而改变对象的状态向前。我想向该解析器添加特定于应用程序的功能,以维持单一职责的原则,因此我认为Decorator设计模式是一个适当的选择。我现在将Stream包裹在Parser中,并添加特定的功能,例如ParserDecorator(Parser)readPerson(),这些功能将数据映射到readItem()并返回{{ 1}}。

首先,我考虑在Object中创建一个以Object作为参数的静态函数;但是,该函数将继续处理流,因此我决定并非在所有情况下都是线程安全的。但是,由于Person返回不同类型的对象,因此无法将其仅与Parser进行逻辑分组。因此,如果以后更改Person类,我必须记住要更改ParserDecorator的读取方式,Person位于程序的不同部分,项目上的新开发人员可能不会检查该位置。通常,我按功能部署文件夹,因此所有需要进行的更改都放在一起,但是在这种情况下不起作用。

使用纯面向对象的方法是否有更好的解决方案?现在,我有一个名为util的单独的功能文件夹,其中包含此类。

编辑: 示例代码:

ParserDecorator

1 个答案:

答案 0 :(得分:0)

经过一整夜的思考,我找到了解决方案。我创建了一个名为ItemJson的新类,并添加了read(JsonParser jsonParser)write(JsonGenerator jsonGenerator, Item item)方法。这样可以将所有相似的类/功能组合在一起,并在单个单独的类中处理数据的重新格式化。