本文主要是介绍Java设计模式 _创建型模式_原型模式(Cloneable),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、原型模式
1、原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能比较好。一般对付出较大代价获取到的实体对象进行克隆操作,可以提升性能。
2、实现思路:
(1)、需要克隆的实体类实现Cloneable接口
(2)、复写clone方法(当前对象本身可以不复写,如果当前对象被继承,需要clone子类,则必须要复写)
二、代码示例
1、基础示例:
import lombok.Data;
@Data
public class Rose implements Cloneable {private String name;public static void main(String[] args) throws CloneNotSupportedException {Rose rose = new Rose();rose.setName("玫瑰");System.out.println(rose);Rose clone = (Rose)rose.clone();System.out.println(clone);System.out.println(rose==clone);}
}
上运行结果:
可以看出,完整的复制了属性,且并不是同一个对象。实现了Cloneable接口的类可以直接用clone方法。
2、继承示例:
// 花抽象类
import lombok.Data;
@Data
public abstract class Flower implements Cloneable{protected String name;public abstract String desc();public Object clone() {Object clone = null;try {clone = super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return clone;}
}
// 牡丹花类
public class Peony extends Flower {public Peony(){this.name = "peony";}@Overridepublic String desc() {return "牡丹花";}
}// 梅花类
public class Plum extends Flower {public Plum(){this.name = "plum";}@Overridepublic String desc() {return "梅花";}
}
// 测试类
public class Ztest {public static void main(String[] args) {Flower plum = new Plum();System.out.println(plum);Flower clone = (Flower) plum.clone();System.out.println(clone);System.out.println(plum==clone);}
}
运行结果:
可以看到运行结果,可以看到完成克隆,且并非同一个对象。子类在调用clone方法时,抽象父类中必须重写,否则无法调用。
学海无涯苦作舟!!!
这篇关于Java设计模式 _创建型模式_原型模式(Cloneable)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!