Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 有什么优雅的方法可以防止类持有私有数据吗?_Design Patterns_Architecture_Refactoring_Paradigms - Fatal编程技术网

Design patterns 有什么优雅的方法可以防止类持有私有数据吗?

Design patterns 有什么优雅的方法可以防止类持有私有数据吗?,design-patterns,architecture,refactoring,paradigms,Design Patterns,Architecture,Refactoring,Paradigms,在最近的一次代码重构中,我实现了将数据处理与数据本身隔离开来的想法。它类似于责任链——处理单元提供在特定业务范围内处理数据的能力,同时数据对象通过整个处理链传递 进一步的优化是通过将处理链实例“单音化”来完成的。考虑到潜在的并发问题,需要消除这些处理单元中的任何私有数据引用 因此,我想知道是否有一些编程范例可以建议其他程序员在将来进行修改时遵循这种模式 提前感谢~“服务无状态”原则。在面向服务的设计范式中,服务应该是无状态的,因此它们没有私有数据。为了支持可伸缩性,需要无状态 更新:若您需要一些

在最近的一次代码重构中,我实现了将数据处理与数据本身隔离开来的想法。它类似于责任链——处理单元提供在特定业务范围内处理数据的能力,同时数据对象通过整个处理链传递

进一步的优化是通过将处理链实例“单音化”来完成的。考虑到潜在的并发问题,需要消除这些处理单元中的任何私有数据引用

因此,我想知道是否有一些编程范例可以建议其他程序员在将来进行修改时遵循这种模式

提前感谢~

“服务无状态”原则。在面向服务的设计范式中,服务应该是无状态的,因此它们没有私有数据。为了支持可伸缩性,需要无状态


更新:若您需要一些状态数据(上下文、会话、业务),有一种优雅的方法可以防止类保存私有数据,称为状态管理委托和状态延迟。状态延迟示例可以是一个专用的数据库/表,您的组件使用它来写入状态并在以后检索它。

我只想指出,您所做的与“贫血模型”设计(反)模式非常相似。就我个人而言,我完全反对。OO设计(我喜欢)基于将数据及其操作放在一个地方。以下是Martin Fowler对此的看法: