软件原型模式

  • 原型模式
    • 意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
    • 例子 :Java中的Object.clone()方法。

以下是一个原型模式(Prototype Pattern)的 Java 实现示例,通过实现 Cloneable 接口并重写 clone() 方法来实现对象的拷贝:

java 复制代码
import java.util.ArrayList;
import java.util.List;

// 1. 定义原型类,实现 Cloneable 接口
class Prototype implements Cloneable {
    private String name;
    private List<String> items;

    public Prototype(String name, List<String> items) {
        this.name = name;
        this.items = items;
    }

    // 重写 clone 方法
    @Override
    public Prototype clone() {
        try {
            // 调用 Object.clone() 进行浅拷贝
            Prototype cloned = (Prototype) super.clone();
            // 对引用类型进行深拷贝
            cloned.items = new ArrayList<>(this.items);
            return cloned;
        } catch (CloneNotSupportedException e) {
            throw new AssertionError(); // 不会发生
        }
    }

    // 添加 item
    public void addItem(String item) {
        this.items.add(item);
    }

    @Override
    public String toString() {
        return "Prototype{" +
                "name='" + name + '\'' +
                ", items=" + items +
                '}';
    }
}

// 2. 客户端代码
public class PrototypePatternDemo {
    public static void main(String[] args) {
        // 创建原型对象
        List<String> initialItems = new ArrayList<>();
        initialItems.add("Item1");
        initialItems.add("Item2");
        Prototype original = new Prototype("Original", initialItems);

        // 克隆原型对象
        Prototype cloned = original.clone();

        // 修改克隆对象
        cloned.addItem("Item3");

        // 输出结果
        System.out.println("Original: " + original);
        System.out.println("Cloned: " + cloned);
    }
}
相关推荐
羞儿9 天前
【读点论文】Overall positive prototype for few-shot open-set recognition
原型模式·小样本学习·特征优化·开集学习
liangshanbo121510 天前
手写 Function.prototype.call 与 Function.prototype.apply 面试题满分答案
开发语言·javascript·原型模式
江畔柳前堤10 天前
云原生 × AI 全景图谱:从 Kubernetes 到 Agent 基础设施的一次认知跃迁
人工智能·分布式·gpt·云原生·kubernetes·原型模式·agi
艾伦野鸽ggg11 天前
JavaScript 原型链与原型对象详解
javascript·原型模式
AgentMaster11 天前
元数据、血缘、质量、安全四大模块能力拆解,数据治理方案对比:4 种技术路线深度评测
大数据·数据库·数据仓库·人工智能·原型模式
江畔柳前堤17 天前
具身智能全景深度指南(2026年9月版):从“会聊天的AI“到“能干活的机器“
大数据·javascript·图像处理·人工智能·分布式·智慧城市·原型模式
神奇霸王龙22 天前
Codex MCP GA 实测:Qwen / GLM / Kimi / DeepSeek / MiniMax 调度 Codex 沙箱的真实成本
人工智能·ai·agent·ai编程·原型模式·mcp
葡萄城技术团队24 天前
如何通过 JSON 数据源 / Web API 快速构建轻量级报表(Report)?
前端·json·原型模式
Leo.yuan24 天前
2026国内数据治理平台选型指南:从ETL到数据质量的一体化路径
原型模式
一个游离的指针1 个月前
JS中的对象的相关概念
开发语言·javascript·原型模式