aÍ O código:
package br.upis.prototype;
public class Animal implements Cloneable {
private String nomeAnimal;
private String racaAnimal;
private Pessoa proprietario;
public void setRacaAnimal(String raca) {
this.racaAnimal = raca;
}
public String getRacaAnimal() {
return racaAnimal;
}
public String getNomeAnimal() {
return nomeAnimal;
}
public void setNomeAnimal(String nomeAnimal) {
this.nomeAnimal = nomeAnimal;
}
public void andar() {
System.out.println(this.getNomeAnimal() + " esta andando...");
}
public void comer() {
System.out.println(this.getNomeAnimal() + " esta comendo...");
}
public Pessoa getProprietario() {
return proprietario;
}
public void setProprietario(Pessoa proprietario) {
this.proprietario = proprietario;
}
public Object clone() {
Object obj = null;
try {
obj = super.clone();
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
package br.upis.prototype;
public class Ovelha extends Animal {
public Ovelha(String nomeAnimal, String racaAnimal, Pessoa proprietario) {
setNomeAnimal(nomeAnimal);
setRacaAnimal(racaAnimal);
setProprietario(proprietario);
}
}
package br.upis.prototype;
public class PrototypeFactory {
Animal protAnimal;
public PrototypeFactory(Animal animal) {
this.protAnimal = animal;
}
public Animal geraClone() {
return (Animal) protAnimal.clone();
}
}
package br.upis.prototype;
public class Pessoa {
private String nome;
public Pessoa() {
}
public Pessoa(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
package br.upis.prototype;
public class Principal2 {
public static void main(String[] args) {
Pessoa proprietario = new Pessoa(“Guilherme”);
Animal matriz = new Ovelha(“Dolly”, “Damara”, proprietario);
System.out.println("Matriz: " + matriz);
System.out.println(matriz.getNomeAnimal());
System.out.println(matriz.getRacaAnimal());
System.out.println("Pessoa: " + matriz.getProprietario());
System.out.println(matriz.getProprietario().getNome());
System.out.println("-----------------------");
PrototypeFactory p = new PrototypeFactory(matriz);
Animal clone = p.geraClone();
clone.getProprietario().setNome("Gustavo");
System.out.println("Clone: " + clone);
System.out.println(clone.getNomeAnimal());
System.out.println(clone.getRacaAnimal());
System.out.println("Pessoa: " + clone.getProprietario());
System.out.println(clone.getProprietario().getNome());
System.out.println("-----------------------");
System.out.println("Matriz: " + matriz);
System.out.println(matriz.getNomeAnimal());
System.out.println(matriz.getRacaAnimal());
System.out.println("Pessoa: " + matriz.getProprietario());
System.out.println(matriz.getProprietario().getNome());
System.out.println("-----------------------");
}
}