網(wǎng)站首頁 編程語言 正文
一、原型模式
原型是相對(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
相關(guān)推薦
- 2022-08-20 python程序的打包分發(fā)示例詳解_python
- 2022-10-22 Oracle根據(jù)時(shí)間查詢的一些常見情況匯總_oracle
- 2022-04-12 ASP動(dòng)態(tài)include文件_ASP基礎(chǔ)
- 2022-10-27 SQL案例學(xué)習(xí)之字符串的合并與拆分方法總結(jié)_oracle
- 2023-01-31 Android如何實(shí)現(xiàn)一個(gè)DocumentProvider示例詳解_Android
- 2022-12-26 python?QT界面關(guān)閉線程池的線程跟隨退出完美解決方案_python
- 2021-11-13 Gateway網(wǎng)關(guān)工作原理及使用方法_其它綜合
- 2022-08-15 常見哈希算法、Hmac算法和BouncyCastle
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支