原型模式(Prototype Pattern)

简介: 原型模式(Prototype Pattern)是一种创建型设计模式,它可以通过复制已有对象来创建新对象,而无需通过实例化来创建。

原型模式(Prototype Pattern)是一种创建型设计模式,它可以通过复制已有对象来创建新对象,而无需通过实例化来创建。

原型模式通常包含两个角色:原型和客户端。原型是需要被复制的对象,它通常实现了一个克隆方法,用于复制自身。客户端负责创建原型对象,并调用其克隆方法来创建新对象。

以下是一个使用原型模式的示例代码:

python
Copy
import copy

class Prototype:
def init(self):
self._name = ""
self._type = ""

def clone(self):
    return copy.deepcopy(self)

def get_name(self):
    return self._name

def set_name(self, name):
    self._name = name

def get_type(self):
    return self._type

def set_type(self, type):
    self._type = type

class ConcretePrototype1(Prototype):
def init(self):
super().init()
self.set_type("Type1")

class ConcretePrototype2(Prototype):
def init(self):
super().init()
self.set_type("Type2")

prototype1 = ConcretePrototype1()
prototype1.set_name("Prototype1")

prototype2 = prototype1.clone()
prototype2.set_name("Prototype2")

print(prototype1.get_name(), prototype1.get_type()) # 输出 "Prototype1 Type1"
print(prototype2.get_name(), prototype2.get_type()) # 输出 "Prototype2 Type1"
在这个示例中,Prototype 是原型类,定义了 clone 方法和一些属性。ConcretePrototype1 和 ConcretePrototype2 是具体原型类,继承了 Prototype 并实现了其方法。

当客户端需要创建新对象时,它可以首先创建一个原型对象,并调用其 clone 方法来复制该对象。然后客户端可以修改新对象的属性,从而创建自己需要的对象。

要使用原型模式,首先需要确定需要创建的对象的类型和属性。然后实现一个原型类,并在其中定义一个克隆方法,用于复制自身。接着实现具体原型类,并继承原型类,实现原型类中的方法。最后客户端可以通过调用原型对象的克隆方法,

可以帮助您深入学习原型模式:

《Head First 设计模式》第 2 章:观察者模式。这本书是一本很好的学习设计模式的入门书籍,适合初学者阅读。

《设计模式:可复用面向对象软件的基础》。这是一本经典的设计模式书籍,其中详细介绍了原型模式以及其他 22 种设计模式。

《大话设计模式》第 6 章:原型模式。这本书通过生动的故事情节和通俗易懂的语言介绍了各种设计模式,适合初学者阅读。

设计模式视频教程。有很多优秀的设计模式视频教程,可以通过观看视频来更好地理解原型模式和其他设计模式。

GitHub 上的设计模式示例代码。可以通过查看其他开发者编写的示例代码来学习原型模式的具体实现方式。

目录
相关文章
|
5天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
16天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1316 5
|
3天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
15天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1372 87
|
3天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
4天前
|
弹性计算 安全 数据安全/隐私保护
2025年阿里云域名备案流程(新手图文详细流程)
本文图文详解阿里云账号注册、服务器租赁、域名购买及备案全流程,涵盖企业实名认证、信息模板创建、域名备案提交与管局审核等关键步骤,助您快速完成网站上线前的准备工作。
211 82
2025年阿里云域名备案流程(新手图文详细流程)