原型模式 野性酷女 2021-07-24 20:41 460阅读 0赞 # 原型模式 # **定义** 在软件系统中,有时需要多次创建某一类型的对象,为了简化创建过程,可以只创建一个对象,然后通过对象克隆的方式复制出多个相同的对象,这就是原型设计模式。 原型设计模式是一种对象创建型模式,用原型实例指定创建对象的种类,并且通过复制这些原型创建新对象。原型设计模式允许一个对象再创建另一个可定制的对象,而不需要知道在创建的细节。 **原型模式结构分析** **1.Prototype(抽象原型类)** 抽象原型类是定义具有克隆自己的方法的接口,是所有具体原型类的公共父类,**可以是抽象类,也可以是接口** **2.ConcretePrototype(具体原型类)** 具体原型类实现了具体的克隆方法,在克隆方法中返回一个自己的克隆对象。 **3.Client(测试类)** 让原型对象克隆一个自己的对象,从而创建出一个新的对象,在测试类中只需要自己new一个对象或者通过工厂方法创建一个对象,然后在调用该对象的克隆方法就可以得到多个复制出来的对象。 下面我们看一个原型设计模式的实例 package clone; //浅克隆 //浅克隆:只复制引用,但不复制引用的对象。这样clone出来的多个对象指向的是同一个对象。复制引用 public class Person implements Cloneable{ private int age; private int length; public Person(int age,int length) { this.age = age; this.length =length; } //抽象原型类object public Object clone() { try { return (Person)super.clone(); } catch(Exception e) { e.printStackTrace(); return null; } } } **注意这一部分的代码的结果在测试类中没有给出输出** package clone; public class Student implements Cloneable { int age; String name; Student(int age,String name ){ this.age = age; this.name =name; } //抽象原型类object public Object clone() { Student o =new Student(12,name); try { o = (Student)super.clone(); }catch(Exception e) { e.printStackTrace(); } return o; } } **测试类** package clone; public class Test { //private static final String leiyu = null; public static void main(String[] args) { // TODO 自动生成的方法存根 Person person1 =new Person(12,12); Person person2 = (Person) person1.clone(); System.out.println(person1.getClass()==person2.getClass()); System.out.println(person1 == person2); System.out.println(person1.toString()); System.out.println(person2.toString()); //Student s1 = new Student(12,leiyu); //Student s2 = (Student) s1.clone(); //System.out.println(s1.getClass()==s2.getClass()); } } **结果** ![在这里插入图片描述][2019111811573953.png] **关于clone方法的输出和测试** Java语言提供的clone()方法将对象复制一份返回给调用者。一般而言,clone()方法满足: 1.对任何的对象x,都有x.clone()!= x,即克隆的对象与原对象不是同一个对象。 2.对任何的对象x,都有x.clone().getclass()==x.getclass(),即克隆对象与原对象的类型一样。 3.如果对象x的equals()方法定义恰当,那么x.clone().equals(x)应该是成立的。 **步骤归纳** 为了获取对象的一份拷贝,我们可以利用Object类的clone()方法,具体步骤归纳如下: 1.在派生类中覆盖基类 的clone方法,并声明为public 2.在派生类中的clone()方法中返回super.clone() 3.在派生类中实现Cloneable接口 在Java语言中通过覆盖Object中的clone方法可以实现浅克隆,如果要实现深客隆,可以通过序列化等方式。 **原型模式适合的情况** 1.创建新对象的成本较大,新的对象可以通过原型模式对已有对象进行复制来获得。 2.系统要保存对象的状态,而对象的状态变化很小。 [2019111811573953.png]: /images/20210724/127bc54297af4b179c4e4b5cb4067678.png
相关 原型模式 public class Phone implements Cloneable { private String toPhoneNumber; 柔情只为你懂/ 2022年03月31日 08:16/ 0 赞/ 176 阅读
相关 原型模式 一. 原型模式简介 原型模式(Prototype Pattern)也是一种创建型模式,它关注的是大量相似对象的创建问题。我们经常会遇到这样的情况:在系统中要创建大量的 超、凢脫俗/ 2022年02月21日 12:16/ 0 赞/ 207 阅读
相关 原型模式 对象浅拷贝 实现Clonable接口,重写clone方法,jvm的本地方法实现拷贝 Object protected native Object clone() 女爷i/ 2021年12月12日 11:39/ 0 赞/ 242 阅读
相关 原型模式 原型模式(Prototype Pattern):通过原型实例指定创建对象的种类,并且通过克隆这些原型来创建新的对象。原型模式是一种创建型模式 完成原型模式一般需要3个角 落日映苍穹つ/ 2021年12月05日 01:03/ 0 赞/ 203 阅读
相关 原型模式 原型模式 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种 「爱情、让人受尽委屈。」/ 2021年09月29日 16:10/ 0 赞/ 297 阅读
相关 原型模式 原型模式:用原型实例指定创建指定对象的种类,并且通过复制这些原型创建新的对象,同时又能保证性能。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价 骑猪看日落/ 2021年09月17日 01:08/ 0 赞/ 290 阅读
相关 原型模式 5.原型模式 ![70][] class Program { static void Main(string[] arg 痛定思痛。/ 2021年09月16日 23:52/ 0 赞/ 324 阅读
相关 原型模式 原型模式 定义 在软件系统中,有时需要多次创建某一类型的对象,为了简化创建过程,可以只创建一个对象,然后通过对象克隆的方式复制出多个相同的对象,这就是原型设计模 野性酷女/ 2021年07月24日 20:41/ 0 赞/ 461 阅读
相关 原型模式 型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了... 小灰灰/ 2020年06月13日 05:37/ 0 赞/ 710 阅读
还没有评论,来说两句吧...