设计模式之禅——原型模式

原创 2016年08月29日 15:28:08

原型模式的定义:不通过new关键字来产生一个对象,而是通过对象复制来实现的模式就叫做原型模式

原型模式的简单程度仅此于单例模式和迭代器模式。

见代码

public class Student implements Cloneable{
    private String classes;
    private String name;
    public void setClasses(String classes){
        this.classes = classes;
    }
    public String getClasses(){
        return this.classes;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }

    public void output(){
        System.out.println("我是" + this.classes + "的" + this.name);
    }

    @Override
    public Student clone(){
        Student studuent = null;
        try{
            studuent = (Student)super.clone();
        }catch (CloneNotSupportedException e){

        }
        return studuent;
    }

    public static void main(String[] args) {
        Student student = new Student();
        student.setClasses("三班");
        student.setName("hms");
        student.output();
        Student student1 = student.clone();
        student.output();
    }
}
/*
我是三班的hms
我是三班的hms
*/

特点

1、实现Cloneable接口,这个接口是JDK自带的,里面没有任何方法。它的作用就是”标示“——告诉虚拟机这个类可以被拷贝
2、重写Object的clone()方法。

原型模式的优点


1、性能优良
原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现优点

2、逃避构造函数的约束。
它不再需要构造函数,这既是它的优点,也是它的缺点

使用场景


1、资源优化场景
类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等

2、性能和安全要求
通过new一个对象要非常繁琐的数据准备或访问权限,则可以使用原型模式

3、一个对象提供给多个修改者
一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑原型模式拷贝多个对象供调用者使用。


注意事项
原型模式是不再执行它的构造函数的!

浅拷贝与深拷贝


浅拷贝是你新拷贝的对象仍然与原对象共享成员变量。这意味着你新拷贝的对象修改之后原有对象的成员变量肯定也会被修改。这些成员变量是 : 非【基本数据类型和String类型】,如ArrayList类型,那么怎么让ArrayList成为深拷贝呢?在clone方法内单独拷贝它,如

this.arrayList = (ArrayList<String>)this.arrayList.clone();


深拷贝就是拷贝了原有对象的所有东西~

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

《设计模式之禅》——原型模式

《设计模式之禅》——原型模式

设计模式之禅——原型模式

并发的实现多种方式。我们主要说的是多线程~首先,你无法选择何时在你的Java程序中出现线程。仅仅是你自己没有启动线程并不代表你就可以回避编写使用线程的代码。例如:Web系统是最常见的Java应用系统之...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

设计模式之禅——策略模式

策略模式的目的是为了动态的设计对象的行为。比如说,新倩女幽魂游戏中的红衣女刀客【RedSwordsMan】有两种移动的方式:1、做任务时,骑马移动 2、和自己的伴侣玩耍时,步行移动ok,肯定还有其他...

《设计模式之禅》——命令模式

命令模式:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

设计模式之禅——门面模式

门面模式【Facade Pattern】也叫外观模式,是一种比较常用的封装模式,其定义如下:【要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更容...

《设计模式之禅》——单例模式

单例模式

【设计模式之禅】单例模式

什么是单例模式? 单例模式(Singleton Pattern)

《设计模式之禅》——组合模式

组合模式:将对象组合成树形结构以表示“部分-整理”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

《设计模式之禅》——策略模式

策略模式:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。

《设计模式之禅》——门面模式

门面模式:要求一个子系统的外部与其内部的通讯必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)