使用命令模式重构Python代码

时间:2015-09-09 07:37:56

标签: design-patterns python-2.x

我正在重构具有20种方法的Python代码。每个方法都更新不同的数据库字段。所有这些方法都重复了一些与打开数据库连接和提交更改相关的代码。传递给所有这些方法的参数有一些常见的参数,有些则没有。传递给这些方法的参数数量不尽相同。 每个方法为自己构建适当的SQL命令(搜索/查询),格式化其数据库名称,可以改变,并打开数据库连接。 下面列出了一些方法原型。

  • updatelogintime(app,session,request,...)
  • disable_user_login(app,request)
  • getPgdbTableStruct(app,tablename,session)
  • getPgDbTables(app,session,userAdmin)
  • getPgData(app,tablename,session,thisOffset,filterResponse,limitToMax)
  • pg_delete(app,tablename,session,sqlCommand,theRow)
  • pg_insert(app,tablename,session,theValues) ...

我的目标是简化代码并避免重复每个方法中的一些代码。我想知道命令模式是否可以使用。

我不清楚什么是Invoker和Receiver对象。公共代码在哪里(在基本命令或具体命令中)?我是否在Receiver对象类中放置每个方法唯一的sql命令字符串代码的构建?

我也想知道是否有另一种优雅而简单的解决方案。 感谢。

1 个答案:

答案 0 :(得分:2)

您可以创建一个实现数据库重复代码的类,并公开查询,删除和更新方法,如Java Spring JDBCTemplate。 在方法中使用此类以避免数据库代码重复。