设计模式之原型模式(创建型)

Posted 思想累积

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之原型模式(创建型)相关的知识,希望对你有一定的参考价值。

1、简介

定义:

如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段相同),这种情况下,我们可以利用已有对象(原型)进行复制(或者叫拷贝)的方式,创建一个或多个相同或相似的对象,以达到节省资源的目的,这种基于原型来创建对象的方式就叫做原型模式。用这种方式创建对象也不用知道对象创建的细节,比较高效。

功能:

  • 通过克隆来创建新的对象实例
  • 为克隆出来的对象实例复制原型实例属性的值

本质:

通过克隆来创建新的对象实例

2、组成结构

Java 提供了对象的 clone() 方法,使用 Java 实现原型模式还是比较简单的

原型模式包含以下角色

  • Prototype 抽象原型类:声明了一个克隆自身的接口,约束想要克隆自己的类
  • Realizetype 具体原型类:实现 Prototype 接口的类,它是可以被复制的对象,实现了克隆自身的功能
  • 访问类:首先获取到原型实例对象,然后通过原型实例克隆自身来创建新的对象实例

原型模式有两种实现方法,深拷贝和浅拷贝。

  • 浅拷贝:只复制对象中基本数据类型数据和引用对象的内存地址,不会递归地复制引用对象,以及引用对象的引用对象
  • 深拷贝:得到的是一份完完全全独立的对象。

简单实现:

// 声明一个抽象原型类,克隆自身的接口
public interface Prototype 
    public Prototype clone();


// 具体实现类
public class Realizetype implements Prototype 
    public Prototype clone() 
        // 最简单的克隆,创建一个自身对象,没有属性就不赋值了
        Prototype prototype = new Realizetype();
        return prototype;
    


// 访问类
public class ProtypeTest 
    private Prototype prototype;

    // 此处可以传入想要创建的 Prototype 类型
    public ProtypeTest(Prototype prototype) 
        this.prototype = prototype;
    
    public void operation() 
        // 会需要创建原型接口的对象,可以自行操作
        Prototype newPrototype = prototype.clone();
    

以上是关于设计模式之原型模式(创建型)的主要内容,如果未能解决你的问题,请参考以下文章

创建型设计模式 之 原型模式

创建型模式之原型模式

浅析设计模式——创建型模式之Prototype(原型模式)

设计模式——创建型模式之原型模式

创建型设计模式之原型模式

设计模式之原型模式(创建型)