python 设计模式

前端之家收集整理的这篇文章主要介绍了python 设计模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

单例---类方法方式

  1. class Single():
  2. def __init__(self,name):
  3. self.name = name
  4. @classmethod
  5. def instance(cls,*args,**kwargs):
  6. if not hasattr(Single,"_instance"):
  7. Single._instance = Single(*args,**kwargs)
  8. return Single._instance
  9. s1 = Single.instance('Gage')
  10. s2 = Single.instance()
  11. print(s1)
  12. print(s2)

单例---new方式

  1. class Single(object):
  2. __isstance = None
  3. __first_init = False
  4. def __new__(cls,**kwargs):
  5. if not cls.__isstance:
  6. cls.__isstance = object.__new__(cls)
  7. return cls.__isstance
  8. def __init__(self,name):
  9. if not self.__first_init:
  10. self.name = name
  11. Singleton.__first_init = True
  12. a = Single('a')
  13. b = Single('b')
  14. print(id(a))
  15. print(id(b))

工厂模式

 
  1. # 首先定义一个抽象基类
  2. class CarStore(object):
  3. # 定义生产汽车的方法
  4. def createcar(self,name):
  5. pass
  6. # 根据类型去生产车
  7. def order(self,name):
  8. self.car = self.createcar(name)
  9. self.car.move()
  10. # 定义4s店 实现抽象类
  11. class AoDiCarStore(CarStore):
  12. def createcar(self,name):
  13. self.factory = CarFactory()
  14. return self.factory.createcar(name)
  15. # 创建一个车
  16. class AoDi():
  17. def move(self):
  18. print('移动')
  19. # 定义一个工厂
  20. class CarFactory():
  21. def createcar(self,name):
  22. self.name = name
  23. if self.name == 'AoDi':
  24. self.car = AoDi()
  25. return self.car
  26. aodi = AoDiCarStore()
  27. aodi.order('AoDi')

 

  1. 本文首发于python黑洞网博客园同步更新

猜你在找的Python面试题相关文章