JiveJdon Community Forums
在线293人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 5 回复 / 1
 发表新帖子   回复该主题贴
storyxsj

悄悄话
发表文章: 21
注册时间: 2006年10月26日 16:50
求教:模型设计之Prototype 2006年11月01日 17:47 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 prototype模式(7)      多例(12)     
1.Prototype模型怎么用啊?
2.谁有模型设计的好书,介绍一本,band 先生的我己经有一份了,就是我有的那份写的不太细,举例有点少,对于初学者,我有点理解不好
xsj4318@yahoo.com.cn我的电邮,
发网站给我也行
thank you for your help _wrriten by super xsj@
banq

悄悄话
发表文章: 9528
注册时间: 2002年08月03日 17:08
Re: 求教:模型设计之Prototype 2006年11月02日 10:39 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
Prototype模型很难理解,其实和大家对对象实例的运行形式不太理解有关,目前有两种:单例和多例,Prototype模型是产生多例的一个创建方式,当然普通new也是产生多例方式,Prototype区别就是象Java中的clone,克隆,将原来对象状态复制一份出来。
storyxsj

悄悄话
发表文章: 21
注册时间: 2006年10月26日 16:50
Re: 求教:模型设计之Prototype 2006年11月02日 11:17 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
调用Prototype模式很简单:

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

band 先生,这是你的文件里关于prototype的讲述,但是,
1。我没有看到调用clone方法呀?这是为什么?
2。对于shadow clone的问题,我是不是还得用深度解决,还是直接不让shadow clone问题出现?
storyxsj

悄悄话
发表文章: 21
注册时间: 2006年10月26日 16:50
Re: 求教:模型设计之Prototype 2006年11月02日 11:21 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
附:1。对不起,由于着急等答案,将名字写错
2。以下是更多的代码,可能为了你解决方便,给你打出来

以勺子为例:

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");
  }
}

thinkjava

悄悄话
发表文章: 112
注册时间: 2007年11月03日 19:22
Re: 求教:模型设计之Prototype 2006年11月07日 14:02 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
这个模式不难,就是用现在的对象再复制一份出来?
具体是使用Object.clone()方法
thinkjava

悄悄话
发表文章: 112
注册时间: 2007年11月03日 19:22
Re: 求教:模型设计之Prototype 2006年11月07日 14:11 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
给你一个例子

/*
* @(#)Test2.java 1.1 2006-11-7
*
* Copyright 2006 Moloon, Inc. All rights reserved.
* MOLOON PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/

package com.create.prototype;

/**
* @author lvyg
* @version 1.1, 2006-11-7
* @since JDK1.5
*/

public class Test2 implements Cloneable {
private String test =
"";

public String test() {
return test;
}

public Object clone() {
Object obj = null;

try {
obj = super.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return obj;
}

/**
* @param args
*/

public static void main(String[] args) {
// TODO Auto-generated method stub
Test2 test = new Test2();
test.test =
"123";
System.out.println(
"test: " + test.test());
Test2 test2 = (Test2) test.clone();
System.out.println(
"test2: " + test2.test());
}

}
这个主题有 5 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  每2分种自动备份发贴内容Ctrl-V粘贴取出,提问题前先查询标签列表

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam