假设我有一个可以创建和删除文件的程序。我有两种不同的方法 - 执行已经处理这些操作的外部实用程序,或者从我的程序中实现创建和删除。我想要选择两者并在运行时动态选择合适的一个。所以我会有类似这样的接口和实现:
class IFile:
def create():
pass
def delete():
pass
class ExecFile(IFile):
def create():
# Call an external executable
def delete():
# Call an external executable
class ImplFile(IFile):
def create():
# Implement creation of the file
def delete():
# Implement deletion of the file
这样,我可以在运行时选择其中任何一个并使用它。但是,如果我决定再创建一个实现,这是之间的混合ExecFile和ImplFile,因此create()功能会一样ExecFile,但删除相同ImplFile(或它们的组合)。我想过使用命令设计模式解决这个问题,并执行以下操作:
class IFile:
def create():
pass
def delete():
pass
class IFileAction:
def exec():
pass
class ExecCreateFile(IFileAction):
def exec():
# Call an external executable to create file
class ImplCreateFile(IFileAction):
def exec():
# Implement creation of the file
class ExecDeleteFile(IFileAction):
def exec():
# Call an external executable to delete file
class ImplDeleteFile(IFileAction):
def exec():
# Implement deletion of the file
class ExecFile(IFile):
def create():
ExecCreateFile().exec()
def delete():
ExecDeleteFile().exec()
class ImplFileIFile(IFile):
def create():
ImplCreateFile().exec()
def delete():
ImplDeleteFile().exec()
class ExecImplFile(IFile):
def create():
ExecCreateFile().exec()
def delete():
ImplDeleteFile().exec()
问题:在这种特殊情况下使用这种设计模式是否合适,还是可以做得更好?我唯一担心的是,如果示例更复杂,假设我添加了一个选项来获取文件大小,获取文件所有者等等,我最终会创建多个类型为IFileAction的类,它基本上只执行一个动作。
PS这可能是一个不好的例子,但想不出更好的事情。此外,问题并不是特别指Python,只是用它来表示示例。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你好,我是AI助理
可以解答问题、推荐解决方案等
评论
全部评论 (0)