日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Python設(shè)計(jì)模式創(chuàng)建型原型模式_python

作者:范桂颶 ? 更新時(shí)間: 2022-04-20 編程語言

一、原型模式

原型是相對(duì)于復(fù)制、克隆而言的,但是不同于模板,模板創(chuàng)造出的東西是一模一樣,而原型創(chuàng)造出的東西是允許存在差異化和個(gè)性化的。

原型模式的實(shí)現(xiàn)思路是:“深拷貝” 和 “屬性更新”。定義一個(gè)原型,設(shè)計(jì)一個(gè)拷貝接口,不需要頻繁實(shí)例化類,只需要拷貝。

優(yōu)點(diǎn):

  • 減少因?yàn)閷?duì)象實(shí)例化而產(chǎn)生的損耗,并實(shí)行動(dòng)態(tài)裝載。

二、應(yīng)用場(chǎng)景

三、代碼示例

要實(shí)現(xiàn)多個(gè)人的自我介紹,一般方法是每個(gè)人都創(chuàng)建一個(gè)對(duì)象,但是使用原型模式之后,只需要實(shí)例化一個(gè)對(duì)象(標(biāo)準(zhǔn)人),后面的人都已這個(gè)標(biāo)準(zhǔn)人為基礎(chǔ)來實(shí)現(xiàn)個(gè)性化。

import copy


class Information:
? ? """個(gè)人信息"""

? ? def __init__(self):
? ? ? ? self.name = None
? ? ? ? self.ager = None
? ? ? ? self.height = None

? ? def run(self):
? ? ? ? """
? ? ? ? 自我介紹方法
? ? ? ? :return:
? ? ? ? """
? ? ? ? print("我叫{}: 年齡:{} 身高:{}".format(self.name, self.ager, self.height))


class Prototype:
? ? def __init__(self, obj):
? ? ? ? self.copy_object = obj()

? ? def clone(self, **attr):
? ? ? ? obj = copy.deepcopy(self.copy_object)
? ? ? ? obj.__dict__.update(attr)
? ? ? ? return obj


if __name__ == '__main__':
? ? test = Prototype(Information)
? ? a = test.clone(name='張山', ager="30", height='170cm')
? ? a.run()
? ? b = test.clone(name='李飛', ager="20", height='190cm')
? ? b.run()

原文鏈接:https://is-cloud.blog.csdn.net/article/details/122934315

欄目分類
最近更新