我有2类(例如)如何摆脱make_xxx()方法?
class FilePath(Path):
pass
class DirectoryPath(Path):
pass
和予选哪一个获得由makepath()方法实例化,simplified:
def makepath(string):
if os.path.isfile(string):
return FilePath(string)
return DirectoryPath(string)
我并不喜欢该make_xxx()方法年份。它让我想起了太多的Java工厂,所以我想知道是否有更多的Pythonic成语?
我不认为这是公平地调用设计模式“Java工厂”。这是一个与语言无关的概念,它在Java发明之前已经在Smalltalk-80中流行了15年。随意使用你喜欢的任何语言的工厂:-) – Kevin 2014-10-16 12:19:04
工厂是一个工厂,但是你实现它 - 正如凯文提到的那样,工厂模式中没有任何特定于Java的工厂。一个普通的函数是Python中明显的,简单的默认实现,除非你的真实逻辑需要更复杂的构造,否则它是pythonic的一个。 – 2014-10-16 13:00:37
感谢布鲁诺以下的食谱。同意我的简化方法实际上是更多Pythonic。时间丢失一点行李,methinks – jalanb 2014-10-16 13:37:42