设计模式7—Prototype设计模式

Prototype原型设计模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。Prototype原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何关于对象创建的细节。

原型模式的UML图如下:

Prototype模式例子如下:

//抽象原型类

abstract class Shape implements Colneable{

      String shapeName;

      public String getShapeName(){

           return shapeName;

      }

     public void setShapeName(String shapeName){

             this.shapeName = shapeName;

      }

  //实现了Colneable接口的类,可以使用clone()方法复制对象

  public Object clone(){

       try{

              return super.clone();

       }catch(CloneNotSupportedException e){

             System.out.println("此对象不支持复制”);

       }

       return null;

  }

}

//具体原型类

public class Circle extends Shape{

        public Circle(){

             setShapeName("Circle shape");

        }

public static void main(String[] args){

       Shape shape = new Circle();

        System.out.println(shape.getShapeName());

        //通过clone()方法获得一个对象拷贝

         Shape shape2 = (Shape)shape.clone();

         System.out.println(shape2.getShapeName());

     }

}

clone()方法是在Object中定义的,而且是protected的,只有实现了Cloneable接口的类才可以在其实例上调用clone()方法,否则会抛出CloneNotSupportException。

为了获取对象的一份拷贝,我们可以利用Object类的clone()方法,也可以实现Cloneable接口,覆盖基类的clone()方法,在clone()方法中,调用super.clone()。

Cloneable接口是一个标记接口,也就是没有任何内容,定义如下:

package java.lang;

public interface Cloneable{

}

克隆只是实现Prototype原型模式的一种方法,也可以直接通过new对象的方式创建原型实例,二者区别在于:

(1)通过new方式创建的原型和现存的实例对象没有任何联系。

(2)通过克隆方法创建的原型,虽然也是创建新对象,但是将原型实例对象的数据复制到了新的对象中,相当于使用被克隆对象的数据作为克隆对象的初始数据。

Prototype原型设计模式和Singleton单例设计模式是相对的,单例模式中,在整个程序生命周期里,单例模式类的实例对象只有一个。而Prototype原型设计模式则正好相反,每次都返回的是原型类的不同实例对象。

JDK中原型模式的应用:

java.lang.Ojbect#clone()

java.lang.Cloneable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值