我遇到了一般的OOP问题,无法找到正确的方法来表达我的问题。
我想创建一个类,它为我提供了一个我可以写入一次的对象,将其保存到存储中,然后无法更改属性。 (例如:发票信息 - 一旦写入存储,这应该是不可变的)。并非所有信息都可以立即获得,在对象的生命周期中,信息会被添加。
我想避免的是在尝试写作时出现异常情况,因为感觉就像是在提供一份你不打算保留的合约。
以下是我到目前为止所考虑的一些想法:
我对这些的看法: 1.使构造函数高度不稳定,通常是个坏主意。 2.爆炸的复杂性,并没有完全解决问题(你可以在同一个请求中连续两次调用setter) 3.容易,但与例外情况相同;这对你的客户来说是一个很大的欺骗。
(仅供参考:我目前正在使用PHP5工作 - 尽管我怀疑这是一个普遍的问题)
答案 0 :(得分:1)
有趣的问题。我认为你最好的选择是#1,但我不确定我是否会在构造函数中做到这一点。这样,客户端代码可以选择它想要对异常做什么(抑制它们,处理它们,将它们传递给调用者等等)。如果您不喜欢异常,则可以将写入移至write()
方法,如果写入成功则返回true
,否则返回false
。