首页 > 解决方案 > 在java中处理临时代码实现的最佳方法

问题描述

我有一个在生产中运行的应用程序,我想在不停机的情况下为我的应用程序进行数据库级别的架构更改(即需要将旧数据迁移到新应用程序,也请参阅以获得更多信息)。

为了处理我的应用程序中的数据操作,我有一个如下所示的 java 类。

public class MongoDBDataLayerImpl implements <some_class> {
   @Override
   public void addElement(){
       //code to do inserting elements
   }

   @Override
   public void deleteElement(){
       //code to perform deletion
   }
   
   @Override
   public void updateElement(){
       //code to perform update
   }

   @Override
   public void readElement(){
       //code to perform read
   }

   /* Note: I have a many more methods like this in my actual implementation,
            I just added this code for the clarity and simplicity.
   */
}

因此,为了进行模式更改,我计划在上述实现中插入一个临时更改(应该很容易拔掉),以便它暂时支持两种模式模型。

为此,我考虑在数据库端有一个数据迁移状态,并在我的实现中使用它来检查我是否应该为该特定数据使用新模式模型或旧模型。

因此,我可能需要在上述方法中设置类似的 if 条件或 switch 语句来执行此操作,例如见下文。

@Override
public void addElement(){
    If (migrationStatus == 'migrated'){
        // use new schema
    }
    else if (migrationStatus == 'migrating'){
        //wait for migration completed and recall this function
    }
    else:
        // use old schema
}

所以我的问题是,有没有合适的方法(一种设计模式)来做这个实现,而不是像上面那样使用 If 条件?(所以这应该很容易恢复)

这方面的最佳做法是什么?

标签: javadesign-patternsdatabase-design

解决方案


推荐阅读