【发布时间】:2023-01-02 22:02:45
【问题描述】:
我正在尝试创建一个模板类来测试 Room 迁移。 测试 Room 迁移应遵循的步骤如下。
- 在以前的版本中创建数据库。
- 用于迁移到下一个版本的用户迁移助手。
- 插入一些数据。
- 验证该数据的完整性。
现在我创建了一个 MigrationHelper 类,它相应地实现了所有这些方法。
class MigrationHelper { fun createDatabase(version : Int) : MigrationHelper{ initialDatabase = migrationTestHelper.createDatabase(TEST_DB_NAME , version) return this } fun insertData(db : SupportSQLiteDatabase){ ... } }现在对于这个类,我目前正在使用构建器方法,以便编写测试的开发人员可以以一种清晰易懂的方式调用方法。
@Test fun runMigration_78_79(){ migrationHelper.setUp("test_db") .addTablesInvolved("packs") .createDatabaseWithData(78) .addMigrations(MIGRATION_77_78,MIGRATION_78_79) .runMigration(79) .cleanOut() }但由于构建器模式,任何方法都可以按任何顺序调用。这对我的实现不利,因为某些方法需要按顺序调用。 例如:可以在“addMigration”方法之前调用“runMigration”方法,因为要运行迁移,您需要添加所有涉及的迁移的数组。
这种情况的最佳设计模式是什么?我知道我可能过于复杂了,我可以用一堆方法创建类并分别调用它们。 但我想有一个干净的方法。 谢谢你。
【问题讨论】:
-
这回答了你的问题了吗? Java pattern to enforce methods are ran
-
@SaifAhmad 实际上没有。模板方法创建一个方法,所有按其执行顺序排列的方法都放在其中。这似乎并没有描述正在发生的顺序。
-
模板方法模式确实强制执行方法的顺序
标签: java android kotlin class design-patterns