文档章节

原型模式

跨界王子
 跨界王子
发布于 2017/05/19 14:20
字数 236
阅读 4
收藏 0

原型模式就是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

package prototype;

public class Employee implements Cloneable {
    private String name;
    private Company company;

    public Employee(String name, String company) {
        this.name = name;
        this.company = new Company(company);
    }

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

    public void setCompany(String company) {
        this.company = new Company(company);
    }

    /**
     * 工作
     */
    public void work() {
        System.out.println(name + " works at " + this.company.name);
    }

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

    //公司
    class Company {
        private String name;

        public Company(String name) {
            this.name = name;
        }
    }
}
package prototype;

public class PrototypeClient {
    public static void main(String[] args) throws CloneNotSupportedException {
        String name = "sam";
        String company = "apple";
        Employee sam = new Employee(name, company);
        sam.work();

        String otherName = "james";
        String otherNcompany = "google";
        Employee james = sam.clone();
        james.setName(otherName);
        james.setCompany(otherNcompany);
        james.work();
    }
}

如果对象中有其他对象的引用,使用浅拷贝无法完成对象的整个克隆,因为如果使用浅拷贝,只是对象的引用得到的拷贝,而两个引用是指向了同一个对象,对其中一个修改还是会影响到另外一个对象。

© 著作权归作者所有

共有 人打赏支持
上一篇: 模板模式
下一篇: 模板模式
跨界王子
粉丝 0
博文 2
码字总数 530
作品 0
沈阳
私信 提问

暂无文章

Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
1
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
0
0
Mybatis 学习笔记四 MyBatis-Plus插件

Mybatis 学习笔记四 MyBatis-Plus插件 maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <ve......

晨猫
昨天
4
0
小白带你认识netty(二)之netty服务端启动(下)

承接上一篇小白带你认识netty(二)之netty服务端启动(上),还剩下两步骤:3、注册Selector:将Channel注册到Selector上 和 4、端口的绑定:服务端端口的监听。 3、注册Selector:将Chann...

天空小小
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部