六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 71|回复: 0

GoF:Prototype模式

[复制链接]

升级  37.33%

30

主题

30

主题

30

主题

秀才

Rank: 2

积分
106
 楼主| 发表于 2013-2-5 01:34:29 | 显示全部楼层 |阅读模式
1.意图:
 用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。(G4)
例子:
public abstract class AbstractPrototype implements Cloneable{@Overrideprotected Object clone(){Object o=null;try {o=super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return o;}public abstract void say();public String getStrName() {return strName;}public void setStrName(String strName) {this.strName = strName;}private String strName;}public class PrototypeA extends AbstractPrototype {public PrototypeA(String name) {setStrName(name);}@Overridepublic void say() {System.out.println("PrototypeA");}}public class PrototypeB extends AbstractPrototype {public PrototypeB(String name) {setStrName(name);}@Overridepublic void say() {System.out.println("PrototypeB");}}public class Test {public static void main(String[] agrs) {AbstractPrototype p = new PrototypeA("fy");AbstractPrototype k = (AbstractPrototype) p.clone();AbstractPrototype e = (AbstractPrototype) p.clone();p.say();k.say();e.say();AbstractPrototype q = new PrototypeB("flh");AbstractPrototype c = (AbstractPrototype) q.clone();AbstractPrototype u = (AbstractPrototype) q.clone();q.say();c.say();u.say();}}    运行结果:
PrototypeAPrototypeAPrototypeAPrototypeBPrototypeBPrototypeB 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表