1

是否可以使用一个抽象类来使用我的 mongoDB 类和 mysql 类。因为,在 mysql 中,我们可以在一个函数中执行插入、更新和删除语句,但 mongodb 我们不能。

或者他们应该有单独的数据库抽象层

 // I can pass INSERT,UPDATE and DELETE query to this function but for monbodb I cannot 
mysql 
public function doNonQuery($sql){
        mysql_query($sql);
}

mongoDB
public function insert($tableName,$query){
    $collection = new MongoCollection($db,$tableName);
    $a  = $query
    $collection->insert($a);
}

public function update($tableName,$query){
    $collection = new MongoCollection($db,$tableName);
    $a  = $query
    $collection->update($a);
}
4

1 回答 1

1

您没有在正确的抽象级别上思考。与其尝试抽象插入、更新和删除操作(这是您的代码示例所做的),不如考虑抽象您的域。这将让您想出一个界面,您可以在其中插入、更新和删除对象。例如:

interface IDatabaseCollection<T> where T : IDatabaseEntity
{
    void Insert(T item);
    void Update(T item);
    void Delete(T item);
}

现在您可以实现一个 SQLDatabaseCollection 和一个 MongoDatabaseCollection,它们都实现了 IDatabaseCollection。

上面是一个基本的例子,当然还有很多其他的方法可以做到。但这是您在处理抽象时需要开始思考的方向。

简而言之,您的抽象太低级,您需要提升它以使其成为更高级别的抽象。

于 2012-09-17T16:58:23.267 回答