1
35
一般来说,正确的方法是您的案例1。这维护了类的单一责任(不管它做什么),而没有将它耦合到特定的持久性机制(磁盘)。 您将看到一个更普遍的问题的具体情况:序列化。对于一个对象来说,有一些方法来指示它应该如何序列化是好的,也可以——毕竟,它是唯一知道反序列化它需要什么的实体。但是,如果您使对象保存到磁盘上,那么您已经将该对象与特定的实现紧密耦合。 相反,考虑创建一个通用的“编写器”可以用来将对象“序列化”到编写器序列化到的任何对象的接口。这样,您就能够序列化到磁盘、网络、内存,以及您实际需要序列化到的任何内容。:) |
2
25
我会做
|
3
9
这是一个例子,
战略设计模式
可以使用。你的
|
4
3
我以前更喜欢选项2;但是,由于我已经开始真正地尝试理解和建模我正在工作的域,所以我更喜欢选项1。 想象一下如果你的模型车。为什么一辆车会知道如何坚持下去?它可能知道如何移动、如何启动和如何停止,但在车辆环境中保存了什么。 |
5
3
另一种方法是使用访问者模式。让对象包含一个接受方法,该方法通过要处理/序列化的成员,并让一个访问者作为序列化程序。无论何时更新或更改序列化(从纯文本到XML再到二进制再到任何内容),都不需要更新对象。 我们有很好的工作经验。它很强大。 |
6
-3
这样做:
很明显,这不是一个完整的解决方案,但你应该有一个大致的想法。 |
7
-4
我认为正确的方法是案例1,但是您的类可以这样定义,以便利用这两种方法:
这可以很容易地修改,将写入逻辑和初始化放在一个基类中,这样Bob类就更干净,并且独立于持久性。 |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
cobby · 在战略模式中使用工厂模式? 2 年前 |
Nobody · Java中带while循环的三角形模式 2 年前 |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
Tanvi Jaywant · 如何重载类 6 年前 |