JiveJdon Community Forums
在线88人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 3 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
X.Underset

发表文章: 51
注册时间: 2004年11月02日 19:56
给他发消息
关于原型模式的看法和疑问 发表: 2008年03月15日 01:19 回复
原型模式调用(具体代码在jdon网站设计模式原型模式):

AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon2 = (AbstractSpoon) spoon.clone();

System.out.println(spoon2.getSpoonName());

原型模式要先new一个对象出来,再利用这个对象"生出"一个自己的克隆。
这种创建对象方式怎么看都有一段代码是多余的,给我感觉挺无聊的。

结合工厂模式后的调用:

String className = "com.patterns.newprototype.SoupSpoon";

AbstractSpoon spoon = SoupSpoonFactory.getSpoon(className);
SpoonInterface spoon2 = (SpoonInterface) spoon.clone();

System.out.println(spoon2.getString());

//---------------------------------------------------------
public interface SpoonInterface {

public String getString();
}
//---------------------------------------------------------
public class SoupSpoonFactory {

public static AbstractSpoon getSpoon(String className) {

AbstractSpoon spoon = null;

try {

spoon = (AbstractSpoon) Class.forName(className).newInstance();

} catch(Exception er) {


}

return spoon;
}
}


public class SoupSpoon extends AbstractSpoon implements SpoonInterface {

public SoupSpoon() {

setSpoonName("中文的SoupSpoon!");
}

public String getString() {

return "打印SoupSpoon";
}

}

第二种:这么写主要是因为后面的看上去较好看,但感觉SoupSpoon之类的子类用了继承和接口实现;设计上可能有些幼稚;又好像在偶合性方面差了点。

第一种:似乎在应用中也不知道他有什么好处,有懂的道友指教一下。模式刚入门没什么经验.


[该贴被X.Underset于2008-03-15 01:21修改过]
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:关于原型模式的看法和疑问 发表: 2008年03月17日 21:45 回复
>似乎在应用中也不知道他有什么好处
原型模式可以从字面上理解:就是原封不动地创造一个对象。注意原封不动这个形容词,实际是拷贝一份,至于拷贝方式则可以各种方式,如使用J2SE的clone或自己使用new,然后定制转移数据等等,都可以。

sthsun

发表文章: 1
注册时间: 2008年03月25日 11:50
给他发消息
回复:回复:关于原型模式的看法和疑问 发表: 2008年03月25日 11:54 回复
我的理解,不知道对否:
你需要有一个对象是所有人可以访问的,部分人可以修改的。在访问时访问者要求对象保持不变。而修改者却要修改这个对象。为性能采用克隆对象应该是比较科学的。在使用缓存机制的时候有许多这类例子的。
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:回复:回复:关于原型模式的看法和疑问 发表: 2008年03月25日 16:08 回复
>你需要有一个对象是所有人可以访问的,部分人可以修改的
从这个方向去理解有失偏颇,应该从对象如何创建这个方向去理解,至于这个对象创建后如何被访问,是所有人访问,还是部分人可以修改,不是原型模式关心的。

先有创建,才有访问,先有你我生命,才有我们今天这里互相访问讨论。
这个主题有 3 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

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

anti spam