每日一题 为了工作 2020 0427 第五十六题
作者:互联网
//设计模式 python版本的简单工厂模式 和 单例模式
# coding=utf-8 # 简单工厂模式 class Ace(object): def __init__(self,name): self.name = name def cut_tree(self): print("使用"+self.name+"砍树") class Stone(Ace): def __init__(self): pass def cut_tree(self): print("使用石头去砍树") class Stell(Ace): def __init__(self): pass def cut_tree(self): print("使用钢铁开始砍树") class Factory(object): @staticmethod def getAce(ace_type): if "stone" == ace_type: return Stone() elif "stell" == ace_type: return Stell() else: return Ace() class Worker(object): def __init__(self,worker_name,ace_type): self.worker_name = worker_name self.ace_type = ace_type def work_action(self): ace = Factory.getAce(self.ace_type) print(self.worker_name) ace.cut_tree() if __name__ == '__main__': work = Worker("zhangsna","stone") work.work_action()
# coding=utf-8 # 单例设计模式 class Singleton: instance = None firstInit = True def __init__(self,name): if self.firstInit: print("init") self.firstInit = False self.name = name def __new__(cls, name,*args, **kwargs): if not cls.instance: cls.instance = object.__new__(cls) return cls.instance def run(self): print("{0} is run".format(self.name)) if __name__ == '__main__': s1 = Singleton("zs") s2 = Singleton("ls") print(id(s1)) print(id(s2)) s1.run() s2.run()
标签:__,name,ace,0427,self,2020,print,第五十六,def 来源: https://www.cnblogs.com/walxt/p/12787944.html