擅长:python、mysql、java
<p>这取决于用户在应用程序中的含义。也许用户可以更改地址。真正的用户(通常代表使用该应用程序的人)可以移动到另一个地址,对吗?在</p>
<p>但是尽管<a href="https://stackoverflow.com/users/364696/shadowranger">@ShadowRanger</a>建议在数据库支持的情况下使用可变对象,我还是建议不要这样做。更好的方法是将用户地址更改封装在对象中。我是说</p>
<pre><code>class User:
def __init__(self, db, name, address):
self.db = db
self.name = name
def change_address_option3(self, new_address):
self.db.exec("update user set address = ? where name = ?", new_address, self.name)
</code></pre>
<p>因此,无论某些处理程序或UI命令中的用户地址需要更改,都可以通过调用</p>
^{pr2}$
<p>使用可变对象,应该是这样的</p>
<pre><code>User user = new User(db, "John")
user.change_address("New York")
db.exec("update users set address = ? where name = ?", user.address, user.name)
</code></pre>
<p>因此,与用户相关的应用程序逻辑有点分散在整个应用程序中。而不是封装在对象内部。在</p>
<p>它看起来像一个可变的对象,因为有些东西是可以改变的。但由于逻辑的封装,它很容易理解和改变一些东西。因为在应用程序的其他地方,您只使用用户的类方法与用户一起工作(例如更改地址),所以很容易更改某些内容,因为其他应用程序的coe不依赖于用户实现细节(是否有数据库或文件或其他任何支持)。在</p>
<p>书中有一篇关于这种方法的文章。在</p>