我最近阅读了一篇文章/代码片段,其中显示了使用多态替换条件的示例.这是代码:
之前:
def log_msg(log_type):
msg = 'Operation successful'
if log_type == 'file':
log_file.write(msg)
elif log_type == 'database':
cursor.execute('INSERT INTO log_table (MSG) VALUES ('?')', msg)
后:
class FileLogger(object):
def log(self, msg):
log_file.write(msg)
class DbLogger(object):
def log(self, msg):
cursor.execute('INSERT INTO log_table (MSG) VALUES ('?')', msg)
def log_msg(obj):
msg = 'Operation successful'
obj.log(msg)
Here是我得到它的地方.
现在我的问题是,第二种方法比第一种方法更好吗?据我所知,如果我想使用第二种方法,每次我想记录某些内容时,我都必须做这样的事情:
if log_type == 'file':
log_msg(FileLogger())
elif: log_type == 'database':
log_msg(DbLogger())
我错过了这个或非常明显的观点吗?