Oop 对象是否应该知道如何将自身添加到数据源?
我有一组对象,这些对象将从数据源1读取并写入数据源2中 创建类似IAddableToDataSourceTwo接口的东西很有诱惑力:Oop 对象是否应该知道如何将自身添加到数据源?,oop,Oop,我有一组对象,这些对象将从数据源1读取并写入数据源2中 创建类似IAddableToDataSourceTwo接口的东西很有诱惑力: public interface IAddableToDataSourceTwo function addToDataSourceTwo(connection As DataSource2Connection) as Boolean public class customer implements IAddableToDataSourceTwo
public interface IAddableToDataSourceTwo
function addToDataSourceTwo(connection As DataSource2Connection) as Boolean
public class customer implements IAddableToDataSourceTwo
public function addToDataSourceTwo(connection as DataSourceConnection) as Boolean
insertSQL = "insert into customers values....."
return connection.nonQuery(insertSQL)
然而,这似乎是一个滑坡。对象是否应该知道如何将自身添加到数据源
另一种选择是这样做
public class DataSource2Writer()
public function writeCustomer(connection, customer as Customer)
insertSQL = "insert customer into customers values....."
return connection.nonQuery(insertSQL)
public function writeInvoice(connection, invoice as Invoice)
insertSQL = "insert into Invoices values....."
return connection.nonQuery(insertSQL)
这看起来不像OO,但更安全地将客户对象与数据源分离
建议?在我看来,没有,因为它违反了法律。但是,您的建议与模式类似。我想这取决于你的立场
我经常问自己:“一封信(或电子邮件)应该知道如何发送吗?”。答案总是否定的。您通常会得到一个“LetterSender”类来完成这项工作。或者,在你的情况下,这是一个很好的问题,但它似乎更多的讨论活跃记录和贫血领域…我同意。在OO的早期,我们试图将各种责任添加到对象本身中。我们制造了一些真正的混乱。仅供参考:面向对象范例adserdum的一个很好的例子是OS/2的WorkplaceShell(WPS)。有人记得那件事吗?