java设计模式之建造者模式
原型模式属于创建型模式之一,用于创建重复的对象,即可以保证性能又能创建对象!
什么时候采用此种设计模式,当我们创建对象代价比较大的时候,我们就可以采用这种方法,用来创建对象。
原意义上是通过对对象的拷贝从而达到创建对象的目的。
具体实现步骤:
首先创建一个抽象接口类:
/**
* 原型模式
* 当创建对象代价较大时采用这种模式,创建对象。
* 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
*
* 克隆对象
*/
//抽象类
public abstract class PrototypeAbstract implements Cloneable{
protected String name;
private String grade;
abstract void doTest();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
//克隆对象
@Override
protected clone() throws CloneNotSupportedException {
= null;
if( ==null){
= super.clone();
}
return ;
}
}
实现类
public class Shape extends PrototypeAbstract {
@Override
void doTest() {
System.out.println(\"shape...\");
}
public Shape() {
name=\"shape\";
}
}
核心代码
首先创建一个map用来保存对象
build 方法是用来创建对象,并且是static 无论外面条用多少次,始终对象保持只有一个。
然后对外提供获取对象的方法,从map中得到对象,调用clone方法,将对象克隆复制一份,返回给调用者。
public class ShapeCache {
//存储对象
private static Map<String,PrototypeAbstract> map = new Hashtable<>();
//对外提供获取对象的方法
public static PrototypeAbstract getPrototype (String id){
//获取对象
PrototypeAbstract prototypeAbstract = map.get(id);
clone = null;
try {
//将获取到的对象直接克隆一个返回给调用者
clone = prototypeAbstract.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return (PrototypeAbstract) clone;
}
//创建对象
public static void build (){
//原对象
PrototypeAbstract prototypeAbstract = new Shape();
prototypeAbstract.setName(\"shape\");
prototypeAbstract.setGrade(\"shape\");
//可以多个创建...
//存储
map.put(prototypeAbstract.getGrade(),prototypeAbstract);
}
}
测试方法
public class Test {
//原型模式创建对象测试
public static void main(String[] args) {
//创建对象,只需创建一次
ShapeCache.build ();
//获取对象
Shape prototype = (Shape) ShapeCache.getPrototype(\"shape\");
System.out.println(prototype.getName());
}
}
这样做的目的,避免大量重复创建对象,对象创建一次,需要用的时候直接进行拷贝克隆!
继续阅读与本文标签相同的文章
上一篇 :
新浪推“ADA社区”App,用户门槛较绿洲更高
下一篇 :
更专业更细分 五金工具转攻国外家庭消费
-
第三讲,Ceph内部构件
2026-05-18栏目: 教程
-
日本发明AI女友,中国却发明AI主持人,这就是差距!
2026-05-18栏目: 教程
-
《华西通信》行业深度:Wi-Fi6同步5G启航,共享万物互
2026-05-18栏目: 教程
-
不用纠结NSA与SA网络!对于5G手机来说,体验基本一致
2026-05-18栏目: 教程
-
你对自己的网站拥有所有权吗?
2026-05-18栏目: 教程
