原型模式
使用场景
在某些场景下,实例化一个类的代价很大,如果需要实例化多个实例,就需要进行多次高代价的操作。又或者,一个实例的属性非常多,且随着程序的运行会动态变化,如果需要这个实例的一个副本,不方便直接通过类进行实例化。这个时候就可以通过原型模式,通过克隆来进行实例化。原型模式本质就是对实例的拷贝。
代码实现
原型抽象类
首先创建一个原型抽象类,并且定义一个clone
的接口。
from abc import ABCMeta, abstractmethod
from copy import deepcopy
class Prototype(metaclass=ABCMeta):
"""
原型模式的抽象类
"""
@abstractmethod
def clone(self):
"""clone抽象方法,具体类中一定实现它"""
pass
具体类
需要实现原型模式的类继承原型抽象类,然后实现clone
方法。
class Role(Prototype):
"""
原型模式的具体类
"""
def clone(self):
"""
实现clone方法用来复制自己,通过深拷贝来复制并返回
"""
return deepcopy(self)
r1 = Role()
r2 = r1.clone()
print(r1)
print(r2)
代码运行结果:
<__main__.Role object at 0x000001155705C2E0>
<__main__.Role object at 0x00000115571B21F0>
欢迎来到testingpai.com!
注册 关于