定義一個用於建立對象的接口,讓子類決定實例化那個類,Factory Method 使一個類的實例化延續到子類python
class UpperCaseGetter: def __init__(self): self.trans = dict(dog='dog', cat='cat') def get(self, gsmid): try: return self.trans[gsmid] except KeyError: return str(gsmid) class LowerCaseGetter: def get(self, gsmid): return str(gsmid) def get_localer(Animal='dog'): Animals = dict(dog=UpperCaseGetter, cat=LowerCaseGetter) return Animals[Animal]() if __name__ == "__main__": e, g = get_localer('dog'), get_localer('cat') for msgid in 'dog cat parrot'.split(): print(e.get(msgid), g.get(msgid))
同時有一篇也是工廠模式的文章不過是C++的實現,這裏附上本身的鏈接:.net