java原型模式

Java原型模式

Java原型模式是创建型模式之一,它通过复制现有的对象来创建新的对象实例,而不是使用传统的new关键字进行创建。原型模式提供了一种快速创建大量对象的方法,可以提升创建对象的效率。

工作原理

原型模式是基于对象的clone()方法来实现的,它可以复制一个现有对象的所有属性和方法。当需要创建一个新的对象时,可以通过复制一个现有对象的方式来实现。因为复制现有的对象是一种更加高效的方法,所以原型模式可以提高对象创建的效率。

代码示例

下面是一个简单的Java原型模式的示例代码:

class Shape implements Cloneable {
    private String id;
    protected String type;
 
    abstract void draw();
 
    public String getType(){
        return type;
    }
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public Object clone() {
        Object clone = null;
 
        try {
            clone = super.clone();
 
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
 
        return clone;
    }
}

在这个示例代码中,Shape类是一个抽象类,它包含了一个id和type属性,以及一个用于绘制的抽象方法draw()。Shape类还实现了Cloneable接口,这个接口是一个标记接口,表示该类可以被克隆。

class Circle extends Shape {
 
    public Circle(){
        type = "Circle";
    }
 
    @Override
    public void draw() {
        System.out.println("Inside Circle::draw() method.");
    }
}

在这个示例中,Circle类是Shape类的子类,它实现了draw()方法。当需要创建一个新的Circle对象时,可以通过复制一个现有的Circle对象来实现:

Circle circle = new Circle();
circle.setId("1");

Circle clonedCircle = (Circle) circle.clone();
clonedCircle.setId("2");

在这个示例中,我们创建了一个Circle对象,并设置了它的id属性为1。然后,我们通过复制这个Circle对象来创建了一个新的Circle对象clonedCircle,并设置了它的id属性为2。

优缺点

优点

  1. 可以提高对象的创建效率,避免重复创建对象;
  2. 可以方便地创建大量相似的对象,节省了代码的重复性。

缺点

  1. 对于含有大量实例变量的对象,实现克隆的方法难度较大;
  2. 克隆对象需要重写clone()方法,这可能会影响到类的继承层次结构。

总结

Java原型模式是一种通过复制现有的对象来创建新的对象实例的设计模式。它可以提高对象创建的效率,避免重复创建对象,同时也可以方便地创建大量相似的对象。在实现过程中,需要注意克隆方法的实现,以及可能影响到类的继承层次结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值