Python设计模式:原型模式

设计模式四:原型模式

什么是原型模式

创建某个时间点对原有对象的一个完全副本。

使用场景

重新创建原有对象没有意义时,
一个对象过于复杂不适合重新创建时,
希望对对象的某些部分变更但又希望保持原有对象不变时,
此时可以使用原型模式。

典型案例

复制一张图片,在复制出的图片上做修改,这样不会影响原图片,也可以得要修改后的图片。

实例代码

#原型模式必备
import copy
from collections import OrderedDict

class Manual:

    def __init__(self,name,authors,date,**arg):
        self.name = name
        self.authors = authors
        self.date = date
        self.__dict__.update(arg)

    def __str__(self):
        lists = []
        ordered = OrderedDict(sorted(self.__dict__.items()))
        for index in ordered.keys():
            lists.append('{} : {}'.format(index,ordered[index]))
            lists.append('\n')
        return ''.join(lists)

class Prototype:

    def __init__(self,obj):
        self.objects = obj
    
    def clone(self,**attr):
        clone_obj = copy.deepcopy(self.objects)
        clone_obj.__dict__.update(attr)
        return clone_obj

def main():
    m = Manual('Motion_Manipulater','shaye','2010-12-29',edition = 1,page = 30)
    prototype = Prototype(m)
    m2 = prototype.clone(edition = 2,page = 40,date = '2011-1-1',authors = 'kitty', 
    remarke = 'Add some function')
    for i in(m,m2):
        print(i)

if __name__ == "__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值