我经常遇到需要执行单个操作的情况,比如说“备份数据库”。在传统的结构化编程中,我只是简单地将其实现为一个函数,它将数据库连接和备份目录作为参数。执行单一操作的OO模式
在面向对象编程中,我觉得这个动作应该以某种方式封装在一个类中。现在我有threeoptions:
我可以用实例的方法实现它,直接传递参数的方法类似
class Backup {
public void DoBackup(DBConnection connection, string backupDir) {
// ...
}
}
我也可以传递参数给构造私有字段存储它们,如:
class Backup {
private DBConnection connection;
private string backupDir;
public Backup(DBConnection connection, string backupDir) {
this.connection = connection;
this.backupDir = backupDir;
}
public void DoBackup() {
// ...
}
}
而且我可以用一个静态方法(如第一个选项):
class Backup {
public static void DoBackup(DBConnection connection, string backupDir) {
// ...
}
}
最后一个选项(静态方法)是IMO与结构化方法直接等价的方法,第一种方法或多或少是命令模式所暗示的,但是具有一定的开销(对于调用方法来说,实现类也是如此)
我在实践中见过所有三种变体。
您认为这三种方法的优缺点是什么?
最好是加上'备份(串备份位置)'到DBConnection的类,如果可能的话给出的语言(C#,您可以做到这一点,所以会红宝石) – alternative 2011-04-17 11:34:22