设计模式简述(七)原型模式

原型模式

描述

基于已有对象,利用JDK的Cloneable接口,生成一个新的对象。

常用于需要同时创建多个对象的场景
默认的clone是浅拷贝,如果要实现深拷贝需自行处理

  • 可以在clone方法中手动拷贝数组成员或者其他引用类型成员
  • 还可以通过对象二进制流的方式实现深拷贝

基本使用

  • 声明一个实现Cloneable的类
java 复制代码
public class User implements Cloneable {
    private String name;
    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public User clone() {
        try {
            return (User) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e);
        }
    }
}
  • 使用
java 复制代码
public class Sample {
    public static void main(String[] args) {
        User baseUser = new User();
        baseUser.setName("张三");
        // 基于张三的名称 创建多个副本 每个副本设置不同的地址
        for (int i = 0; i < 3; i++) {
            User cloneUser = baseUser.clone();
            cloneUser.setAddress("地址:" + i);
            System.out.println(cloneUser);
        }
    }
}

使用场景

当构建基础对象比较耗时时,采用Clone方式

否则直接构建基础对象

相关推荐
aiden:)1 小时前
设计模式之工厂模式(factory pattern):在商品对象创建系统中的应用
java·开发语言·设计模式·软件工程·软件构建
十五年专注C++开发2 小时前
面试题:C++11在C++98基础上增加了哪些内容?
开发语言·c++·设计模式·面试·stl·适配器模式
都叫我大帅哥3 小时前
代码界的「跨界婚姻」:桥接模式的鹊桥艺术
java·后端·设计模式
独爱竹子的功夫熊猫5 小时前
从复杂到优雅:用建造者和责任链重塑代码架构
java·后端·设计模式
找了一圈尾巴14 小时前
设计模式(结构型)-桥接模式
设计模式·桥接模式
匹马夕阳14 小时前
java开发中的设计模式之单例模式
java·单例模式·设计模式
啊QQQQQ19 小时前
设计模式-原型模式
java·设计模式·原型模式
xiaowu08019 小时前
C#设计模式-状态模式
设计模式·c#·状态模式
编程侦探19 小时前
【设计模式】适配器模式:让不兼容的接口和谐共处
开发语言·c++·设计模式·适配器模式
骊山道童20 小时前
设计模式-桥接模式
设计模式·桥接模式