我的命令工厂(一) —— 泛型
程序员文章站
2022-03-08 20:24:04
...
泛型开发已经是java编程中老生常谈的问题了,这里就不一一详细解释泛型的基础了。笔者在几年前也不知道泛型的好处,当时j2me并不支持泛型(如今亦是),直到写编辑器和服务器开发才渐渐接触和爱上java的泛型,虽然比起c++的泛型扔是相形见拙。好了简单的废话开场白结束之后我们开始介绍这个Command Factory.
这里笔者举例的一个工厂是用来处理上下行网络报文包的,暂时只给出下行解析的列子。
ManageObject类是一个通用对象接口,之后我们所有的Command皆要实现这个规范接口,最终通过我们的构建器来获取相应的Command。
package com.gameu.core;
/**
* 通用对象接口
* @author Tony
*
*/
public interface ManageObject {
/**
* 获取对象创建时间戳
* @return 对象创建时间戳
*/
long getCreateTime();
/**
* 获取对象编号
* @return 对象统一编号
*/
int getID();
/**
* 获取对象名称
* @return 对象名称
*/
String getName();
/**
* 对象初始化
*/
void initialize();
/**
* 设置对象编号
* @param ID 对象统一编号
*/
void setID(int ID);
/**
* 设置对象名称
* @param name 对象名称
*/
void setName(String name);
/**
* 获取对象上次更新时间戳
* @return 上次更新时间戳
*/
long getLastUpdateTime();
}
从上面代码中 我们不难看出 这就是一个普通得不能再普通的一个通用接口。里面有一些常用方法。之后我们要用我们的Command来实现。
接下来介绍一下 泛型对象调用的核心:池
package com.gameu.core;
import java.util.Iterator;
import java.util.Set;
/**
* 通用池化接口
* @author Tony
*/
public interface Poolable<T extends ManageObject> {
/**
* 是否包含目标ID
* @param id 要查询的ID
* @return 是/否
*/
boolean contains(int id);
/**
* 池中是否包含目标名称
* @param name 要查询的名称
* @return 是/否
*/
boolean contains(String name);
/**
* 池销毁方法
*/
void destory();
/**
* 通过目标ID检索关联的池对象
* @param id 目标ID
* @return 关联的池对象
*/
T get(int id);
/**
* 通过目标名称检索关联的池对象
* @param name 目标名称
* @return 关联的池对象
*/
T get(String name);
/**
* 获取池名称
* @return 池名称
*/
String getName();
/**
* 池初始化方法
*/
void initialize();
/**
* 获取池的对象迭代器
* @return 池对象迭代器
*/
Iterator<T> iterate();
/**
* 获取池的的主键集合,用于便历
* @return 主键集合
*/
Set<Long> keySet();
/**
* 计算池长度,即池对象个数
* @return 池长度
*/
int length();
/**
* 从池中退出目标ID的对象
* @param id 目标ID
* @return 目标对象
*/
T pop(int id);
/**
* 从池中退出目标名称的对象
* @param name 目标名称
* @return 目标对象
*/
T pop(String name);
/**
* 放入一个对象到池中
* @param value 目标对象
* @return 压入后更新的目标对象
*/
T push(T value);
/**
* 更新池对象<br>
* 根据功能不同,实现也不同:<br>
* 如保存池,会根据将对象更新到数据库中.<br>
* @param value 目标对象
*/
T update(T value);
}
Poolable是一个核心池。一切的manageobject都是存在这个核心池中。对于其中的T,各位不懂得看官去看看泛型基础就知道了。
好了,第二章会介绍command的具体实现,之后还会引入Dictionary类来完成字典查询。
上一篇: 继承
下一篇: 基于Python实现简易文档格式转换器