美文网首页
Java 原型模式

Java 原型模式

作者: 索性流年 | 来源:发表于2021-02-18 09:21 被阅读0次

文集地址

概述

  • 原型模式隶属于创建型模式,主要是用于创建重复的对象,但每个对象都具有独立的内存地址与指针,互不关联,修改其中一个对象的属性,其他对象不会做出改变。

原型模式与工厂模式有什么区别

  • 工厂模式是生产的都是同一个对象,若在工厂内修改对象,那所有通过工厂创建的对象都将改变
  • 原型模式将一个对象复制成多个,每个对象都可以更改而不影响其他对象

优缺点

  • 优点:无需再一个对象上频繁更改,由于每个对象都是独立的,所以可以避免构造函数的约束。
  • 缺点:由于是复制出来的对象,他们的大体思路都是一致的,只是有细微的差别,不符合高内聚低耦合原则(个人觉得官方没这么写)

简单应用

  • 原型抽象对象
/**
 * 原型抽象对象
 * @author ext.liuyan10
 * @date 2021/2/7 14:06
 */
public abstract class Prototype implements Cloneable{
    protected String name;

    public String getName() {
        return name;
    }

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

    public Prototype(String name) {
        this.name = name;
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

  • 抽象对象实现
/**
 * 抽象对象实现
 * @author ext.liuyan10
 * @date 2021/2/7 14:06
 */
public class ConcretePrototype extends Prototype {
    public ConcretePrototype(String name) {
        super(name);
    }
    public void printingName(){
        System.out.println(this.name);
    }
}

  • 调用案例
/**
 * @author ext.liuyan10
 * @date 2021/2/7 11:31
 */
public class PrototypeApp {
    public static void main(String[] args) {
        ConcretePrototype prototype = new ConcretePrototype("初始对象");
        prototype.printingName();
        for (int i = 0; i < 2; i++) {
            try {
                if (prototype.clone() instanceof ConcretePrototype) {
                    ConcretePrototype clone = (ConcretePrototype) prototype.clone();
                    clone.setName("克隆对象"+i);
                    prototype.printingName();
                    clone.printingName();
                }
            } catch (CloneNotSupportedException e) {
                System.err.println(e.toString());
            }
        }
    }
}
  • 调用结果
初始对象
初始对象
克隆对象0
初始对象
克隆对象1
Disconnected from the target VM, address: '127.0.0.1:50185', transport: 'socket'

Process finished with exit code 0

相关文章

  • 原型模式

    由于 Java 提供了对象的 clone() 方法,所以用 Java 实现原型模式很简单。 1. 模式的结构 原型...

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

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

  • 《JAVA与模式》之原型模式

    在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式。...

  • 设计模式系列-原型模式,备忘录模式

    原型模式 定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式已经与Java融为一体...

  • 设计模式——原型模式

    在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的:原型模式属于对象的创建模式。通...

  • Java架构师课程

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

  • 10、原型模式(Prototype Pattern)

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

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

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

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

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

  • 总览

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

网友评论

      本文标题:Java 原型模式

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