展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

原型模式解决克隆羊问题

  • 使用原型模式改进传统方式,让程序具有更高的效率和扩展性

  • 代码实现

package com.atguigu.prototype.improve;

public class Sheep implements Cloneable {
	
	private String name;
	
	private int age;
	
	private String color;
	
	private String address = "蒙古羊";
		
	public Sheep(String name, int age, String color) {
		super();
		this.name = name;
		this.age = age;
		this.color = color;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public String getColor() {
		return color;
	}
	
	public void setColor(String color) {
		this.color = color;
	}
	
	@Override
	public String toString() {
		return "Sheep [name=" + name + ", age=" + age + ", color=" + color + ", address=" + address + "]";
	}
	//克隆该实例,使用默认的clone方法来完成
	@Override
	protected Object clone()  {
		Sheep sheep = null;
		try {
			sheep = (Sheep)super.clone();
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println(e.getMessage());
		}
		// TODO Auto-generated method stub
		return sheep;
	}
	
}

package com.atguigu.prototype.improve;

public class Client {

	public static void main(String[] args) {
		System.out.println("原型模式完成对象的创建");
		Sheep sheep = new Sheep("tom", 1, "白色");
		
		Sheep sheep2 = (Sheep)sheep.clone(); //克隆
		Sheep sheep3 = (Sheep)sheep.clone(); //克隆
		Sheep sheep4 = (Sheep)sheep.clone(); //克隆
		Sheep sheep5 = (Sheep)sheep.clone(); //克隆
		
		System.out.println("sheep2 =" + sheep2);
		System.out.println("sheep3 =" + sheep3);
		System.out.println("sheep4 =" + sheep4);
		System.out.println("sheep5 =" + sheep5);
	}

}
posted @ 2022-08-30 14:07  DogLeftover  阅读(15)  评论(0编辑  收藏  举报