• 设计模式之Prototype(原型)(转)


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

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

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

    以勺子为例:

    public abstract class AbstractSpoon implements Cloneable
    { 
      String spoonName; 
    
      public void setSpoonName(String spoonName) {this.spoonName = spoonName;}
      public String getSpoonName() {return this.spoonName;}
    
      public Object clone() 
      {
        Object object = null;
        try {
          object = super.clone();
        } catch (CloneNotSupportedException exception) {
          System.err.println("AbstractSpoon is not Cloneable");
        }
        return object;
      }
    }

    有两个具体实现(ConcretePrototype):

    public class SoupSpoon extends AbstractSpoon
    { 
      public SoupSpoon()
      {
        setSpoonName("Soup Spoon"); 
      }
    }
    public class SaladSpoon extends AbstractSpoon
    { 
      public SaladSpoon()
      {
        setSpoonName("Salad Spoon"); 
      }
    }

    调用Prototype模式很简单:

    AbstractSpoon spoon = new SoupSpoon();
    AbstractSpoon spoon = new SaladSpoon();

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

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

    转自:http://www.jdon.com 板桥里人

  • 相关阅读:
    java中tif转png
    HTTP服务器、WEB服务器、应用服务器
    word将编号转成普通文本
    浏览新闻常用单词
    手机端搜索的回车事件
    C#(winform)的label自动换行
    oracle for update wait 解析
    java8 新特性parallelStream 修改默认多线程数量
    ArcObjects您必须有许可证才能使用此ActiveX控件
    图灵社区电子书 全高清可编辑 内含多种格式 [珍藏]
  • 原文地址:https://www.cnblogs.com/alfredinchange/p/5375433.html
Copyright © 2020-2023  润新知