package com.meidusa.amoeba.net.packet; import org.apache.log4j.Logger; import com.meidusa.amoeba.net.Connection; public abstract class AbstractPacketFactory<T extends AbstractPacket,V extends AbstractPacketBuffer> implements PacketFactory<T> { private static final Logger logger = Logger.getLogger(AbstractPacketFactory.class); public T createPacket(Connection conn, byte[] buffer) { try { T packet = getPacketClass(buffer).newInstance(); V packetBuffer = getPacketBufferClass(buffer).newInstance(); packet.init(packetBuffer); return packet; } catch (Exception e) { logger.error("instance of packet Error",e); return null; } } protected abstract Class<T> getPacketClass(byte[] buffer); protected abstract Class<V> getPacketBufferClass(byte[] buffer); }