什么是设计模型

设计模型是经过总结,优化的,对一些经常碰到的编程的问题,重复利用的解决方案。在IT行业中设计模型一共有23种,可以分为三大类

  • 创建模型:提供实例化的方法,为适合的状况提供相应的对象创建方法
  • 结构化模型:通常用来处理实体之间的关系,使得这些实体能够更好地协同工作
  • 行为模式:用于在不同的实体建进行通信,为实体之间的通信提供更容易,更灵活的通信方法

设计模型之单例模型

理解

保证一个类仅有一个实例,并提供一个访问它的全局访问点

场景

当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。

当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

实现

  1. class Single(type):
  2. new_obj = None # 记录一个被创建对象的引用
  3. def __call__(self, *args, **kwargs):
  4. # 判断类属性是否为空引用, 若为空则为对象分配空间
  5. if not self.new_obj:
  6. obj = super().__call__(*args, **kwargs)
  7. self.new_obj = obj
  8. return self.new_obj
  9. return self.new_obj
  10. class MyClass(metaclass=Single):
  11. def __init__(self, name):
  12. self.name = name
  13. obj_1 = MyClass('kevin')
  14. obj_2 = MyClass('tony')
  15. print(obj_1 is obj_2)
  16. # True
  17. # 实现方式不唯一,更多操作:https://www.cnblogs.com/Dominic-Ji/p/10525994.html

设计模型之工厂模式

工厂模型就是指只通过一个接口,根据参数的取值来创建不同的实例

  1. class Apple:
  2. def make(self):
  3. print('正在制作苹果手机')
  4. class XiaoMi:
  5. def make(self):
  6. print('正在制作小米手机')
  7. class HuaWei:
  8. def make(self):
  9. print('正在制作华为手机')
  10. class Iphone:
  11. iphone = {'apple': Apple, 'xiaomi': XiaoMi, 'huawei': HuaWei}
  12. def __new__(cls, name):
  13. if name in cls.iphone:
  14. return cls.iphone[name]().make()
  15. else:
  16. print('没有该手机')
  17. apple = Iphone('apple')