设计模式学习笔记之原型模式

原型模式提供了确定对象种类的接口,客户端通过拷贝原型来创建重复的对象。

Java中原型模式的实现,即是使用clone方法。

例如我们有一个Cat类:

package com.DesignPolicyLearn.Prototype;
/*
 * author:Tammy Pi
 * function:猫类
 */
public class Cat {

	private String name;
	
	public Cat(String name){
		
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public void display() {
		
		System.out.println("My name is "+name);
	}
	
	public Object clone(){
		
		return this;
	}
}


用于测试的类:

package com.DesignPolicyLearn.Prototype;
/*
 * author:Tammy Pi
 * function:测试类
 */
public class Main {

	public static void main(String[] args){
		
		Cat cat1 = new Cat("JiaFei");
		cat1.display();
		
		Cat cat2 = (Cat) cat1.clone();
		cat2.display();
	}
}

这样我们就方便的创建多个重复的对象,而不需要new。不过需要注意的是,现在cat1和cat2的引用是一样的,也就是改了cat2里的值name,cat1的值name也就变化了。

如果不希望这样,希望他们是值相同引用不相同的两个对象,那么clone中应该这样写:

public Object clone(){
		
		return new Cat(name);
	}


个人认为,原型模式还蛮有用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值