美文网首页设计模式
创建型模式——2原型模式

创建型模式——2原型模式

作者: li_荔枝 | 来源:发表于2019-09-25 10:27 被阅读0次

声明:设计模式系列笔记摘自http://c.biancheng.net/view/1317.html

1、定义:用一个已经创建好的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象

2、原型模式包括以下主要角色:
a.抽象原型类:规定了具体原型类必须实现的接口。
b.具体原型类:实现了抽象原型类的clone()方法,它是可被复制的对象。
c.访问类:使用了具体原型类中的clone()方法复制新对象。


image.png

3.具体原型类例子:

class Realizetype implements Cloneable{
    Realizetype(){
        System.out.println("具体原型创建成功");
    }
    
    public Object clone() throws CloneNotSupportedException{
        System.out.println("具体原型复制成功");
        return (Realizetype)super.clone();
    }
}

public class PrototypeTest {
    public static void main(String[] args) throws CloneNotSupportedException {
        Realizetype obj1 = new Realizetype();
        Realizetype obj2 = (Realizetype) obj1.clone();
        System.out.println("obj1==obj2?"+(obj1==obj2));
    }
}

结果:
具体原型创建成功!
具体原型复制成功!
obj1==obj2?false

3.2具体原型类例子——奖状(除了名字外,其他属性相同,可以通过复制原型实现)

public class PrototypeCitaion{
    public static void main(String[] args) throws CloneNotSupportedException {
        Citation citaion = new Citation("张三","同学:在2016学年第一学期中表现优秀,被评为三好学生。","仲恺农业工程学院");
        citaion.display();
        Citation citation2 = (Citation) citaion.clone();
        citation2.setName("李四");
        citation2.display();
    }
}

class Citation implements Cloneable{
    private String name;
    private String info;
    private String college;
    
    public Citation(String name, String info, String college) {
        // TODO Auto-generated constructor stub
        this.name = name;
        this.info = info;
        this.college = college;
        System.out.println("奖状创建成功!");
    }
    public Object clone() throws CloneNotSupportedException{
        System.out.println("奖状拷贝成功!");
        return (Citation)super.clone();
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void display(){
        System.out.println(name+info+college);
    }
}

4.应用场景:
a.对象相同或相似,只有个别属性不同
b.对象的创建过程复杂,但是复制过程比较简单的时候。

相关文章

  • PHP常用设计模式

    # 创建型 单例模式 工厂模式 工厂抽象模式 原型模式 建造者模式 # 结构型 # 行为型 # 3.注册模式 # ...

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

    定义 原型模式是一个创建型的设计模式。用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式多用于...

  • 原型模式

    个人博客http://www.milovetingting.cn 原型模式 模式介绍 原型模式是一个创建型的模式。...

  • 三、原型模式

    原型模式用于创建重复对象的同时保持性能,该模式属于创建型设计模式,是创建对象的最佳实现方式。 为什么要使用原型模式...

  • 初始设计模式之原型模式

    原型模式是什么? 原型模式怎么用?浅拷贝深拷贝 原型模式再理解 一、原型模式是什么? ​ 原型模式是一种创建型设计...

  • 设计模式[4]-原型模式-Prototype Pattern

    1. 原型模式简介 原型模式(Prototype Pattern)是创建型设计模式,根据一个原型对象,通过Clon...

  • 创建型设计模式

    1,创建型设计模式有四种:1,单例模式。2,工厂模式。3,建造者模式。4,原型模式。 2,四种设计模式的应用场景:...

  • S3. 原型模式

    原型模式(Prototype) baidu[www.baidu.com] 原型模式是一种创建型设计模式,其功能为复...

  • 设计模式之原型模式

    一 预备知识 1. 首先我们要知道 原型模式是设计模式中的创建型 2.要了解原型模式我们要了解java 中的深...

  • Objective-C 原型模式 -- 简单介绍和使用

    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype原型模式是一种创建型设计模式,P...

网友评论

    本文标题:创建型模式——2原型模式

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