当前位置:首页 >> 人工智能

原始模型模式计划

人工智能  |  2021-09-06  |  来源:潜江物联网云平台

原始模型模式,我认为也可以称为克隆模式,就是由一个完整的产品对象复制出另一个对象的模式。它也是对象的创建模式,但是只与原始对象有关,不需要工厂类。 原始模型模式最成功的应用之一就是Object类的clone方法,可能由于这种方法的存在,很多人没有意识到原始模型模式是一种特定的创建模式。但是,它的确是一种产生对象的模式,而且clone方法所实现的只是原始模型模式的一种情况。

原始模型模式的对象创建方式有两种,可以分别称为浅复制和深复制:浅复制就是从原对象复制出新的对象时,并不复制它的成员对象,即它的成员对象句柄所指向的还是原对象中的成员对象;深复制就是在新对象中,成员对象也是新的。 packageprototype;

publicinterfacePrototype...{

publicvoidprintPart();

ObjectflatClone();

ObjectdeepClone()throwsException;

}

packageprototype;

.*;

publicclassConcretePrototypeimplementsPrototype,Serializable...{

privatePartpart;

publicConcretePrototype()...{

part=newPart();

}

publicvoidprintPart()...{

intln(part);

}

publicObjectflatClone()...{

ConcretePrototypecp=newConcretePrototype();

rt=rt;

returncp;

}

publicObjectdeepClone()throwsException...{

ByteArrayOutputStreambo=newByteArrayOutputStream();

并向他们宣传有关的法律法规 ObjectOutputStreamoo=newObjectOutputStream(bo);

iteObject(this);

ByteArrayInputStreambi=newByteArrayInputStream(ByteArray());

ObjectInputStreamoi=newObjectInputStream(bi);

return(adObject());

}

classPartimplementsSerializable...{

}

}

packageprototype;

publicclassClient...{

publicstaticvoidmain(String[]args)throwsException...{

ConcretePrototypeoriginate,cloned,deepCloned;

originate=newConcretePrototype();

eep(2000);

cloned=(ConcretePrototype)atClone();

deepCloned=(ConcretePrototype)epClone();

intln(originate);

intln(cloned);

intln(deepCloned);

intPart();

intPart();

intPart();

}

}

可以看出,打印的前三行各不相同,这说明通过浅复制和深复制,所得到的对象都是与原对象不同的;打印的后三行中有两行相同,这说明,在浅复制时,成员对象的实体没有被复制,只是复制了其句柄,而深复制时,成员对象的实体也被复制了。

银川治疗阳痿哪家好
痛风关节炎的症状有哪些
呼和浩特治白癜风哪里最好