美文网首页
java设计模式05(原型模式)

java设计模式05(原型模式)

作者: 刺风有道 | 来源:发表于2019-04-11 15:12 被阅读0次

原型模式是一种对象创建型模式,它的工作原理很简单:将一个原型对象传给要发动创建的对象(客户端对象),这个要发动创建的对象通过请求原型对象复制自己来实现创建过程(也称为克隆对象)。通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆所产生的对象进行修改不会对原型对象造成任何影响,每一个克隆对象都是相互独立的。

在复制原型对象的同时是否复制包含在原型对象中引用类型的成员变量,原型模式的克隆机制分为两种,即浅克隆和深克隆。
1.浅克隆:在浅克隆中,当原型对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的成员变量并没有复制,只是复制了引用对象的地址。
2.深克隆:除了对象本身被复制外,对象所包含的所有成员变量也将被复制。

原型模式的结构与实现:
1.Prototype(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,它可以是抽象类也可以是接口或者具体类。

public abstract class Prototype {,

    public abstract Prototype clone();
}

2.ConcretePrototype(具体原型类):它实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。

public class ConcretePrototype extends Prototype {
    
    private String str;
    
    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    @Override
    public Prototype clone() {
        ConcretePrototype prototype=new ConcretePrototype();
        prototype.setStr(this.str);
        return prototype;
    }

}

3.Client(客户类):在客户类中,让一个原型对象克隆自身从而创建一个新的对象,由于客户类针对抽象原型类Prototype编程,因此用户可以根据需要选择具体原型类。

public class Client {

    public static void main(String[] args) {
        ConcretePrototype prototype=new ConcretePrototype();
        prototype.setStr("Str");
        ConcretePrototype copyPrototype=(ConcretePrototype) prototype.clone();
        System.out.println(prototype==copyPrototype);
    }
}

Java中的clone()方法和Cloneable接口:在java中所有类的父类Object类提供了一个clone()方法,可以将一个对象复制一份,但只是实现了对象的浅克隆。

public class ConcretePrototypeB implements Cloneable {

    public Prototype clone() {
        Object object = null;
        try {
            object = super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }

        return (Prototype) object;
    }

}

相关文章

  • Java设计模式之04_Prototype(原型模式)

    更多Java设计模式:Java设计模式-目录 原型模式是一种简单、易使用的创建型设计模式,通过给出一个原型对象来指...

  • Java设计模式——原型模式

    Java设计模式之原型模式 回顾 Java设计模式系列的上一期写了工厂模式,那么创建类的设计模式还有生成器模式和原...

  • JavaJavascript基础进阶(十七)JS中常用的设计模式

    单利设计模式、构造原型设计模式、发布订阅设计模式、promise设计模式 单利模式 构造原型设计模式 最贴近OOP...

  • java设计模式05(原型模式)

    原型模式是一种对象创建型模式,它的工作原理很简单:将一个原型对象传给要发动创建的对象(客户端对象),这个要发动创建...

  • Java架构师课程

    Java架构班开学典礼 Spring中常用的设计模式概述及工厂模式详解 单例模式及原型模式单例模式及原型模式单例模...

  • Java设计模式<原型模式>

    Java设计模式<原型模式> 意图 原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思...

  • 总览

    1 书籍推荐 《Java设计模式》 2 分类 创建型模式 工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模...

  • 10、原型模式(Prototype Pattern)

    1. 原型模式 1.1 简介   原型模式又叫克隆模式,顾名思义该模式是克隆对象的代码逻辑的设计。在《JAVA与模...

  • java23种设计模式

    java的设计模式大体上分为三大类:创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式...

  • Spring 准备内容

    准备内容 原型设计模式 PropotypeModle 原型模式也属于创造型设计模式,用原型实例指定创建对象的种类,...

网友评论

      本文标题:java设计模式05(原型模式)

      本文链接:https://www.haomeiwen.com/subject/rasaiqtx.html