按功能和装饰器模式折叠
如果我有一个关联的Parser
的{{1}},则当我浏览Stream
时,我将随着Tokens
移动而改变对象的状态向前。我想向该解析器添加特定于应用程序的功能,以维持单一职责的原则,因此我认为Decorator设计模式是一个适当的选择。我现在将Stream
包裹在Parser
中,并添加特定的功能,例如ParserDecorator(Parser)
或readPerson()
,这些功能将数据映射到readItem()
并返回{{ 1}}。
首先,我考虑在Object
中创建一个以Object
作为参数的静态函数;但是,该函数将继续处理流,因此我决定并非在所有情况下都是线程安全的。但是,由于Person
返回不同类型的对象,因此无法将其仅与Parser
进行逻辑分组。因此,如果以后更改Person类,我必须记住要更改ParserDecorator
的读取方式,Person
位于程序的不同部分,项目上的新开发人员可能不会检查该位置。通常,我按功能部署文件夹,因此所有需要进行的更改都放在一起,但是在这种情况下不起作用。
使用纯面向对象的方法是否有更好的解决方案?现在,我有一个名为util的单独的功能文件夹,其中包含此类。
编辑: 示例代码:
ParserDecorator
答案 0 :(得分:0)
经过一整夜的思考,我找到了解决方案。我创建了一个名为ItemJson
的新类,并添加了read(JsonParser jsonParser)
和write(JsonGenerator jsonGenerator, Item item)
方法。这样可以将所有相似的类/功能组合在一起,并在单个单独的类中处理数据的重新格式化。