我有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