Java Prototype模式(原型模式)

2009-02-11 16:28:00

原型模式定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.

Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

如何使用? 因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式实现一下子变得很简单.

以勺子为例:

Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客public abstract class AbstractSpoon implements Cloneable
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客{
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 String spoonName;
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 public void setSpoonName(String spoonName) Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客{this.spoonName = spoonName;}
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 public String getSpoonName() Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客{return this.spoonName;}
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 public Object clone()
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客{
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 Object object = null;
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 try Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客{
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 object = super.clone();
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 } catch (CloneNotSupportedException exception) Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客{
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 System.err.println("AbstractSpoon is not Cloneable");
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 }
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 return object;
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 }
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客}

有个具体实现(ConcretePrototype):

Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客public class SoupSpoon extends AbstractSpoon
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客{
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 public SoupSpoon()
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客{
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 setSpoonName("Soup Spoon");
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客 }
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客}

调用Prototype模式很简单:

Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客AbstractSpoon spoon = new SoupSpoon();
Java Prototype模式(原型模式) --转 - m15004318303 - m15004318303的博客AbstractSpoon spoon2 = spoon.clone();

当然也可以结合工厂模式来创建AbstractSpoon实例。

在Java中Prototype模式变成clone()方法的使用,由于Java的纯洁的面向对象特性,使得在Java中使用设计模式变得很自然,两者已经几乎是浑然一体了。这反映在很多模式上,如Interator遍历模式。

点赞
  1. HighRollerMage说道:
    Google Chrome Windows 10
    https://t.me/s/iGaming_live/4864
  2. Pokerdomded说道:
    Google Chrome Windows 10
    https://t.me/s/officials_pokerdom/3698
  3. DealerShadow说道:
    Google Chrome Windows 10
    https://t.me/s/officials_pokerdom/4006
  4. LuckyBandit说道:
    Google Chrome Windows 10
    http://images.google.ki/url?q=https://t.me/s/officials_7k/969
  5. AllInAce说道:
    Google Chrome Windows 10
    В лабиринте игр, где всякий площадка стремится зацепить обещаниями простых призов, рейтинг мобильных казино является именно той ориентиром, которая проводит через заросли обмана. Тем ветеранов да новичков, которые надоел из-за пустых заверений, он инструмент, чтобы увидеть реальную rtp, словно вес золотой монеты на пальцах. Минус ненужной ерунды, просто реальные площадки, в которых отдача не только число, но реальная удача.Составлено из яндексовых поисков, будто паутина, что ловит топовые свежие веяния по интернете. В нём минуя роли к шаблонных фишек, любой момент будто карта на игре, там обман выявляется мгновенно. Профи понимают: по стране манера разговора на подтекстом, где сарказм притворяется словно намёк, помогает обойти рисков.На https://linktr.ee/Don8Play такой список лежит словно раскрытая карта, готовый на старту. Загляни, коли желаешь ощутить биение реальной азарта, минуя иллюзий плюс неудач. Для что знает ощущение выигрыша, такое как держать ставку на пальцах, вместо пялиться в дисплей.

发表回复

电子邮件地址不会被公开。必填项已用 * 标注