文档章节

原型模式

泡海椒
 泡海椒
发布于 2015/08/09 20:10
字数 247
阅读 49
收藏 2

prototype模式是一种对象创建型模式,他采取复制原型对象的方法来创建类的实例,使用原型创建出来的实例具有和原型一样的数据

package com.org.prototype;
import java.util.ArrayList;
import java.util.List;

public class Person implements Cloneable{//实现Cloneable接口

    // 姓名
    private String name;
    // 年龄
    private int age;
    // 性别
    private String sex;
    //朋友
    private List<String> friends;

    public List<String> getFriends() {
        return friends;
    }

    public void setFriends(List<String> friends) {
        this.friends = friends;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    
    public Person clone() {//实现克隆的方法
        try {
            Person person  = (Person)super.clone();
            List<String> newfriends = new ArrayList<String>();
            for(String friend : this.getFriends()) {
                newfriends.add(friend);
            }
            person.setFriends(newfriends);
            return  person;
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
            return null;
        }
    }

}
客户端代码

package com.org.prototype;
import java.util.ArrayList;
import java.util.List;


public class MainClass {
    public static void main(String[] args) {

        
        Person person1 = new Person();
        List<String> friends = new ArrayList<String>();
        friends.add("James");
        friends.add("Yao");
        
        person1.setFriends(friends);
        
        Person person2 = person1.clone();
        
        System.out.println(person1.getFriends());
        System.out.println(person2.getFriends());
        
        friends.add("Mike");
        person1.setFriends(friends);
        System.out.println(person1.getFriends());
        System.out.println(person2.getFriends());
    }
}


 

© 著作权归作者所有

上一篇: redis环境的搭建
下一篇: 工厂方法模式
泡海椒
粉丝 11
博文 282
码字总数 288344
作品 0
成都
程序员
私信 提问
JavaScript高级程序设计02

面向对象 重点:原型 创建对象 Javascript中没有类的概念,对象是属性的集合,可以想象成成散列表。 对象实例 创建object实例,为它添加方法 对象字面量 其实就是创建object实例的简写形式 ...

白发道长
2018/01/02
0
0
【设计模式】原型模式 Pototype Parttern

前面讲了创建一个对象实例的方法单例模式Singleton Parttern, 创造多个产品的工厂模式(简单工厂模式 Simple Factory Pattern, 工厂方法模式 FactoryMothed Parttern,抽象工厂模式 Abstra...

风之源
2018/08/06
0
0
java23种设计模式十四(连载)

十四、原型模式 原型模式属于对象的创建模式,它要求对象可以“克隆”自身,从而可以复制本身的对象来创建一个实例。通过原型创建的对象,不需要关心这个实例本身,只要实现了克隆方法,就可...

lynnlovemin
2017/08/31
0
0
【JS系列】一起理解对象的7种创建方式(全)

前言 起初接触JS时常见的简单地创建单个对象的方式有下面三种: 字面量,即var obj = {} new Object() Object.create() 以上三种方式在需要创建很多对象时会产生大量重复代码。显然需要更高效...

一灯
04/25
0
0
深入理解原型模式 ——通过复制生成实例

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_Guide一 原型模式介绍 在面向对象系统中,使用原型模式来复制一个对象自...

Amsour丶
2018/06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部