我有一组对象将从数据源1读取并写入数据源2。
很有可能创建类似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,但更安全地将客户对象与数据源分离。
建议?
答案 0 :(得分:2)
在我看来,不会违反Single Responsibility Principle。但是,您所建议的内容与Active Record模式类似。我想这取决于你的立场:SRP。
我经常问自己“信件(或电子邮件)应该知道如何发送自己吗?”总是,答案是否定的。您通常最终会使用“LetterSender”类来执行此操作。或者,在您的情况下,“CustomerDataMapper”。