zoukankan      html  css  js  c++  java
  • prototype原型模式

    /**
    * 原型模式 Prototype
    * 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
    */

    需求:
    public class Resume {
    /**
    * 要求:一个简历类,必须有姓名,可以设置性别和年龄,可以设置工作经历,最终需要三份简历
    */
    String name;
    int age;
    String gender;
    String timeArea;
    String company;

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

    public void setPersonInfo(String gender, int age){
    this.gender = gender;
    this.age = age;
    }

    public void setWorkExperience(String timeArea, String company){
    this.timeArea = timeArea;
    this.company = company;
    }

    public void display(){
    System.out.println(name + gender + age);
    System.out.println("工作经历: " + timeArea +" " + company);
    }

    public static void main1(String[] args){
    Resume a = new Resume("大鸟");
    a.setPersonInfo("男", 21);
    a.setWorkExperience("上海", "xxx公司");

    Resume b = new Resume("大鸟");
    b.setPersonInfo("男", 21);
    b.setWorkExperience("上海", "xxx公司");

    Resume c = new Resume("大鸟");
    c.setPersonInfo("男", 21);
    c.setWorkExperience("上海", "xxx公司");

    a.display();
    b.display();
    c.display();

    }

    改进:
      
    public void copySome(String[] args){
    Resume a = new Resume("大鸟");
    a.setPersonInfo("男", 21);
    a.setWorkExperience("上海", "xxx公司");
    Resume b = a;
    Resume c = a;

    a.display();
    b.display();
    c.display();
    }

    引出原型模式。

    深拷贝与浅拷贝:

    区别在于浅拷贝对于引用数据类型只是引用的传递,可能导致克隆体和本体共用一个引用变量,造成互相影响。深拷贝需要重写clone,进行引用对象的值传递。

    
    
  • 相关阅读:
    Seaslog高性能日志系统学习
    同步、异步与阻塞、非阻塞、协程
    SQL常用增删改查语句
    js里的document对象大全(DOM操作)
    php的cURL资源的初步使用
    hive学习笔记(初级)
    使用NSIS制作可执行程序的安装包
    C#设置一个控件可以鼠标拖动
    C#画图超出屏幕的部分无法显示的解决方法
    C#获取当前不同网卡对应的iP
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/6865939.html
Copyright © 2011-2022 走看看