Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1503934
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 20:53:39

一起学习
适合场合:
1. 当要实例化的类是在运行时刻指定时,例如,通过动态装载;
2. 为了避免创建一个与产品类层次平行的工厂类层次时;
3. 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
java 代码
  1. package created;
  2. /* @author hexiong
  3. * 3rd object-created-type pattern, builder
  4. */
  5. abstract class AbstractPrototype
  6. {
  7. public abstract AbstractPrototype cloneYourself();
  8. }
  9. class MyPrototype extends AbstractPrototype
  10. {
  11. public AbstractPrototype cloneYourself()
  12. {
  13. try {
  14. System.out.println("Myprototype clone.");
  15. return (AbstractPrototype)this.clone();
  16. } catch (CloneNotSupportedException e) {
  17. return null;
  18. }
  19. }
  20. }
  21. class YourPrototype extends AbstractPrototype
  22. {
  23. public AbstractPrototype cloneYourself()
  24. {
  25. try {
  26. System.out.println("Yourprototype clone.");
  27. return (AbstractPrototype)this.clone();
  28. } catch (CloneNotSupportedException e) {
  29. return null;
  30. }
  31. }
  32. }
  33. class PrototypeSetting
  34. {
  35. private AbstractPrototype prototype_;
  36. public void setPrototype(AbstractPrototype prototype)
  37. {
  38. prototype_ = prototype;
  39. }
  40. public void method1()
  41. {
  42. AbstractPrototype p = prototype_.cloneYourself();
  43. // other operation on p.
  44. }
  45. }
  46. public class PrototypeDemo
  47. {
  48. /**
  49. * @param args
  50. */
  51. public static void main(String[] args)
  52. {
  53. // TODO Auto-generated method stub
  54. PrototypeSetting p = new PrototypeSetting();
  55. p.setPrototype(new MyPrototype());
  56. p.method1();
  57. }
  58. }
下载本文示例代码


设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型设计模式-对象创建型模式-原型
阅读(141) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~