当前位置: 首页 > news >正文

简洁的门户网站免费的行情网站app软件

简洁的门户网站,免费的行情网站app软件,沈阳建设工程信息网职称公示2013年,网站开发设计报告书怎么写文章目录 前言一、原型模式二、原型模式示例三、原型管理器 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:关注类和对…

文章目录

  • 前言
  • 一、原型模式
  • 二、原型模式示例
  • 三、原型管理器


前言

GOF设计模式分三大类:

  • 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。
  • 结构型模式:关注类和对象之间的组合,包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。
  • 行为型模式:关注对象之间的交互,包括职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。

一、原型模式

原型模式(Prototype Pattern)

  • 定义:使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。
  • 解决问题:如何通过克隆来得到一个一模一样的对象?(通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址。)
  • 使用场景:
    • 创建新对象成本较大
    • 系统要保存对象的状态
    • 在运行时动态地创建和定制对象
  • 组成:
    • 原型接口(Prototype):声明克隆自身的接口
    • 具体原型(ConcretePrototype):实现原型接口,提供克隆自身的操作。
    • 客户端(Client):让一个原型克隆自身,从而创建一个新的对象。
  • 优点:
    • 当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率
    • 可以使用深克隆的方式保存对象的状态。使用原型模式将对象复制一份并将其状态保存起来,以便在需要的时候使用,例如恢复到某一历史状态,可辅助实现撤销操作
  • 缺点:
    • 注意深克隆与浅克隆的区别和使用场景

在这里插入图片描述

二、原型模式示例

使用原型模式快速创建工作周报

import copyclass Prototype:"""原型接口"""def clone(self):# 这里用深拷贝,这意味着对象及其所有引用的对象都将被复制# 若不希望复制对象内部的引用类型,copy.copy()来执行浅拷贝return copy.deepcopy(self)class WeeklyLog(Prototype):"""具体原型"""def __init__(self, name=None, date=None, content=None):self.name = nameself.date = dateself.content = content

客户端代码

def display_log(log: WeeklyLog):print("###周报###")print(f"姓名:{log.name}")print(f"周次:{log.date}")print(f"内容:{log.content}")print("#" * 10, "\n")log_lastweek = WeeklyLog("张三", "第12周", "这周工作很忙,每天加班!")
log_thisweek = log_lastweek.clone()
log_thisweek.date = "第13周"
display_log(log_lastweek)
display_log(log_thisweek)
print(log_lastweek is log_thisweek)  # 输出 False,表示是不同的对象

输出结果

###周报###
姓名:张三
周次:第12周
内容:这周工作很忙,每天加班!
#############周报###
姓名:张三
周次:第13周
内容:这周工作很忙,每天加班!
##########False

三、原型管理器

  • 原型管理器(Prototype Manager)是将多个原型对象存储在一个集合中供客户端使用,它是一个专门负责克隆对象的工厂
  • 原型管理器采用单例模式,能节省系统资源,也能更好地管理。定义一个集合存储原型对象,需要某个原型对象的一个克隆,调用相应对象的克隆方法来获得。
import copy"""原型接口"""class OfficialDocument:def clone(self):return copy.deepcopy(self)def display(self):raise NotImplementedError"""具体原型"""class FAR(OfficialDocument):def display(self):print("《可行性分析报告》")class SRS(OfficialDocument):def display(self):print("《软件需求规格说明书》")"""原型管理器(使用模块单例模式)"""class PrototypeManager:def __init__(self):self.official_docs: dict[str, OfficialDocument] = {}self.add_official_docs()def add_official_docs(self):self.official_docs["far"] = FAR()self.official_docs["srs"] = SRS()def get_official_doc(self, key: str) -> OfficialDocument:official_doc = self.official_docs.get(key, None)if official_doc:return official_doc.clone()prototype_manager = PrototypeManager()
  • 客户端代码
from prototypes import prototype_managerdoc1 = prototype_manager.get_official_doc("far")
doc2 = prototype_manager.get_official_doc("far")
doc1.display()
doc2.display()
print(doc1 is doc2)doc3 = prototype_manager.get_official_doc("srs")
doc4 = prototype_manager.get_official_doc("srs")
doc3.display()
doc4.display()
print(doc3 is doc4)
  • 输出结果
《可行性分析报告》
《可行性分析报告》    
False
《软件需求规格说明书》
《软件需求规格说明书》
False

您正在阅读的是《设计模式Python版》专栏!关注不迷路~

http://www.dinnco.com/news/65803.html

相关文章:

  • 营销网站建设公司有哪些百度热度
  • 网站如何注册微信公众平台 类型郑州网站定制
  • 网站建设的常用词深圳网站开发技术
  • 网站建设和程序开发哪个好互联网营销策划
  • 网站开发前端规范网络代运营推广
  • 风格活泼的网站设计汕头网站建设方案优化
  • 什么网站发布找做效果图的百度下载app
  • 怎么查看网站有没有做竞价友情链接平台哪个好
  • 新手做网站遇到的问题以及解决方案独立站建站平台有哪些
  • 卖文具的网站建设宁波网站推广优化
  • 网站建设策划案seo页面优化的方法
  • 网站建设具体流程荥阳网络推广公司
  • wap网站制作开发公司webview播放视频
  • php网站开发软件是什么自己建网站需要钱吗
  • wordpress 下载统计seo原创工具
  • 上海网站群建设成功营销案例分享
  • 外汇网站模版苏州吴中区seo关键词优化排名
  • 安徽省徽工建设集团网站电脑版百度
  • 山东省社会信用体系建设规划网站网络推广平台大全
  • 王烨萌 俄罗斯重庆seo网络营销
  • 毕业论文代做网站百度霸屏推广多少钱一个月
  • 做一个网站设计要多久湖州网站seo
  • 美颜秘籍网站建设最新seo课程
  • 商务网站内容建设教程浙江seo外包
  • 安全联盟这种网站建设百度技术培训中心
  • 做微网站需要什么全球疫情今天最新消息
  • 新加坡网站大全整合营销理论主要是指
  • 网站系统jsp模板小说关键词生成器
  • bootstrap免费模板千度seo
  • 模版网站是什么意思seo排名优化培训