美文网首页
原型模式-CV大法

原型模式-CV大法

作者: 一个好汉 | 来源:发表于2021-08-03 22:30 被阅读0次
原型模式

原型模式

原型模式的理解

原型模式,简单的理解就是CTRL C CTRL V
文艺点那叫照猫画虎
让我们简简单单的复制一个对象吧
直接创建对象的代价比较大时,则采用这种模式

联系实际生活中的例子:

  1. 复制一个文件成为副本
  2. 生物克隆
  3. 3D打印(扫描原物 打印与之对应的物体)

Java中原型模式

Java 原生支持原型模式

创建关键点:

  1. 实现接口 Cloneable
  2. 重写方法 clone()

来人 上代码

Good:
  • 复制对象更简单了 不用自己使用get set方法慢慢设置
Bad:
  • 必须实现Cloneable接口 不然会报错
Class Diagram
3D打印-类图
Code:

这是一个实现Cloneable的产品

public class Product implements Cloneable {

    private int length;
    private int width;
    private int height;
    private String material;

    public Product() {
        super();
        System.err.println("创建了一个产品");
    }

    public int getLength() {
        return length;
    }

    public void setLength(int length) {
        this.length = length;
    }

    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public String getMaterial() {
        return material;
    }

    public void setMaterial(String material) {
        this.material = material;
    }

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

}

3D打印机

//:
public class Machine {

    public static void main(String[] args) {
        Product product = new Product();
        product.setLength(5);
        product.setWidth(4);
        product.setHeight(6);
        // metal 金属  material 材料
        product.setMaterial("metal");
        try {
            Product copy = (Product) product.clone();
            String result = String.format("copy之后得到的对象的属性值为:长度--%s,宽度--%s,高度--%s,材料--%s。", copy.getLength(), copy.getWidth(), copy.getHeight(), copy.getMaterial());
            System.out.println(result);
            System.out.println("复制之后是否相等:" + (product == copy ? "相等" : "不相等"));
        } catch (CloneNotSupportedException e) {
            System.out.println("克隆发生异常");
            e.printStackTrace();
        }

    }

}
/* result-->
 *创建了一个产品
 *copy之后得到的对象的属性值为:长度--5,宽度--4,高度--6,材料--metal。
 *复制之后是否相等:不相等
 * 结果分析 :String也可以得到克隆 原来String也属于浅克隆的 一部分呀
 * copy不会再调用构造器
 * 复制之后的对象是另外的对象跟原来的对象不是同一个
 *///:~

相关文章

  • 原型模式-CV大法

    原型模式 原型模式的理解 原型模式,简单的理解就是CTRL C CTRL V文艺点那叫照猫画虎让我们简简单单的复制...

  • CV大法 - 常用记录

    android studio中 logcat日志过多,不能显示完全,分行显示方法

  • 第3章 创建型模式-原型模式

    一、原型模式简介 二、原型模式的优点 ■ 三、原型模式的使用场景 ■ 四、原型模式的实例

  • 设计模式之原型模式(Prototype 模式)

    引入原型模式 原型模式的实例 为什么需要使用原型模式 引入原型模式 如果读者很熟悉javascript的话,对原型...

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

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

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

    [TOC] 模式定义 原型模式(Prototype Pattern):原型模式是提供一个原型接口,提供原型的克隆,...

  • opencv+python -- 图像直方图应用

    直方图均衡化 cv2.equalizeHist函数原型:equalizeHist(src[, dst]) 。函数e...

  • 原型模式C++

    原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式结构图 原型模式基本代码 原型...

  • RecyclerView封装通用的方法

    对RecyclerView进行封装 封装了点击事件,长按点击事件,直接CV大法即可 activity_main.x...

  • 设计模式:原型

    原型模式基本介绍原型模式的实现源码中的原型模式记录 原型模式基本介绍 定义:用原型实例指定创建对象的种类,并通过复...

网友评论

      本文标题:原型模式-CV大法

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