追MM之原型模式实现-阿里云开发者社区

开发者社区> ghost丶桃子> 正文

追MM之原型模式实现

简介:
+关注继续查看
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dba10g.blog.51cto.com/764602/229578
跟MM用QQ聊天,一定要说些深情的话语了。但是,学理科的,哪有那多的情话啊,所以只能在网上搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。
 
 
抽象原型角色:给出具体原型类的接口,一般要继承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()); 
     
  } 

 
 
 
 

本文出自 “简单” 博客,请务必保留此出处http://dba10g.blog.51cto.com/764602/229578

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Hadoop01【介绍】
HADOOP是apache旗下的一套开源软件平台,HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
5 0
3月已有5起千万级融资,无/低代码开发平台的春天来了
3月已有5起千万级融资,无/低代码开发平台的春天来了 从3年16起融资到半个月5起融资,无/低代码平台真正受追捧
4 0
在阿里云 ECS 上试图安装 SAP Commerce Cloud 的 137 错误
在阿里云 ECS 上试图安装 SAP Commerce Cloud 的 137 错误
3 0
SAP ABAP和Hybris的源代码生成工具
SAP ABAP和Hybris的源代码生成工具
3 0
APF filter到底支持多复杂的条件
APF filter到底支持多复杂的条件
3 0
优先应用共识韧性交付带动,流程自动化成趋势,RPA前景可期
从Gartner报告看RPA市场前景,优先应用成共识,战略趋势不可少 优先应用共识韧性交付带动,流程自动化成为转型趋势,RPA前景可期
5 0
​上云以后,SaaS化RPA的未来在哪里?
上云以后,SaaS化RPA的未来在哪里? RPA上云之后,SaaS行业的通病会不会与之并存?
7 0
Redis键过期策略、内存淘汰策略详解(下)
Redis键过期策略、内存淘汰策略详解(下)
3 0
APF filter到底支持多复杂的条件
APF filter到底支持多复杂的条件
6 0
从一个 SAP CRM 软件实际的故障处理出发,谈谈企业管理软件领域内那些很难稳定重现故障的处理技巧
从一个 SAP CRM 软件实际的故障处理出发,谈谈企业管理软件领域内那些很难稳定重现故障的处理技巧
3 0
1955
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载