跟MM用QQ聊天,一定要说些深情的话语了。但是,学理科的,哪有那多的情话啊,所以只能在网上搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。
 
追MM之原型模式实现_休闲
 
抽象原型角色:给出具体原型类的接口,一般要继承Cloneable接口
具体原型:被复制的对象,需要时,需要重写clone方法。在这里,实现clone 有深复制和前复制两种。
原型管理器:创建具体原型类的对象,并记录每一个被创建的对象。(init方法)
 
源代码
抽象原型
package prototype;

public interface Message extends Cloneable{
/*
*    信息都是可以被发送的
*/

  public void send(String content);
    
  public String getContent();
    
  public Object clone();
}
 
具体原型
package prototype;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class LoveMessage implements Message,Serializable {

  private String content;

  public void send(String content) {
    this.content = content;
  }

  @Override
  public Object clone() {
    ByteArrayOutputStream bo = new ByteArrayOutputStream();
    ObjectOutputStream oo;
    InputStream bi;
    ObjectInputStream oi = null;
    Object target = null;
    try {
      oo = new ObjectOutputStream(bo);
      oo.writeObject(this);

      bi = new ByteArrayInputStream(bo.toByteArray());
      oi = new ObjectInputStream(bi);
      target = oi.readObject();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    return target;
  }

  public String getContent() {
    
    return this.content;
  }

}
 
原型管理器
package prototype;

import java.util.Vector;

public class MessageManager {

  public Vector<Message> messages = new Vector<Message>();
    
  public void add(Message message){
    messages.add(message);
  }
    
  public Message getClone(int index){
    Message message = messages.get(index);
    if( message != null){
      return (Message) message.clone();
    }
    return null;
  }
}
 
客户端
package prototype;

public class Client {

  public static void init(MessageManager mgr){
    Message m1 = new LoveMessage();
    m1.send("我爱你,你却爱着他");
    mgr.add(m1);    
    Message m2 = new LoveMessage();
    m2.send("ILOVEYOU");
    mgr.add(m2);
  }
  public static void main(String[] args){
    MessageManager mgr = new MessageManager();
    init(mgr);//初始化
    System.out.println(mgr.getClone(1).getContent());
    
  }
}