美文网首页
逸笔记-设计模式-创建型模式-原型模式

逸笔记-设计模式-创建型模式-原型模式

作者: lovefy | 来源:发表于2023-04-12 11:57 被阅读0次

1.什么是原型模式

就是用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。简单来说就是拷贝一些类的对象

2.场景

比如我现在开一条流水线,制作华为mate50的手机,制作一台mate50需要几百个属性,人工做一台还好一些,如果要几百万台的话一模一样的mate50的话,这个时候就需要机器开一条流水线制作了。
例如人工制作mate50的代码

@Data
@AllArgsConstructor
public class Mate50 {

    /**
      *  手机壳
      */
    private String shell;

    /**
     *  电池
     */
    private String cell;


    /**
     *  芯片
     */
    private String slug;

}
@Test
public void makePhone() throws CloneNotSupportedException {
    Mate50 m = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m1 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m2 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m3 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m4 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m5 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m6 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m7 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m8 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m9 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
    Mate50 m10 = new Mate50("昆仑玻璃","5000MA电池","麒麟9030");
}
image.png

这样人工的话会new多个对象,并不方便,使用了原型模式后的代码 同样可以得到结果

@Data
@AllArgsConstructor
public class Mate50 implements Cloneable{

    /**
      *  手机壳
      */
    private String shell;

    /**
     *  电池
     */
    private String cell;


    /**
     *  芯片
     */
    private String slug;

    @Override
    public String toString() {
        System.out.println("地址:" + super.toString());
        return "Mate50{" +
        "手机壳='" + shell + '\'' +
        ", 电池='" + cell + '\'' +
        ", 芯片='" + slug + '\'' +
        '}';
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        System.out.println("开始克隆");
        return super.clone();
    }
}
image.png

这样就解决了重复数据new对象的问题,不过clone方法是浅拷贝,如果要进行深拷贝的话,要实现额外的代码,这样就会使得对象里面的方法变的复杂,这个也是原型模式的一个缺点

相关文章

  • 手撸golang 创建型设计模式 原型模式

    手撸golang 创建型设计模式 原型模式 缘起 最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔记...

  • 设计模式整理(4) 原型模式

    学习《Android 源码设计模式解析与实践》系列笔记 介绍 原型模式是一种创建型的模式。原型模式就是用户从一个样...

  • android常用设计模式

    26种设计模式 创建型设计模式[5] 单例模式,工厂模式,抽象工厂模式,建造模式,原型模式,[简单工厂模式] 结构...

  • 三、原型模式

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

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

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

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

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

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

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

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

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

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

  • S3. 原型模式

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

网友评论

      本文标题:逸笔记-设计模式-创建型模式-原型模式

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