Подклассы для обеспечения альтернативного поведения - это один из способов, но это не всегда выполнимо, как вы заметили. Можете ли вы как-нибудь придумать решение, основанное на составе, а не наследовании ?
Посмотрите, сможете ли вы заставить его работать, используя ваш класс have-a
DatagramPacket
в качестве переменной-члена, улучшая его поведение, оборачивая методы вашего класса вокруг DatagramPacket
.
Похоже, вы хотите отправлять DatagramPackets в конце, но с некоторой специальной обработкой в дополнение к тому, что уже делает DatagramSocket. Вот дизайн, который приходит на ум (я уверен, что есть много других):
class JayPacket {
private byte[] payload; // Payload without any flow control bytes
// Other flow control magic
public DatagramPacket asDatagramPacket() {
// Package this instance's payload plus your flow control bytes
// into a DatagramPacket
}
public static JayPacket fromDatagramPacket(DatagramPacket datagramPacket) {
// Parse the control bytes out of the given DatagramPacket
// and construct a JayPacket
}
}
Тогда другой класс обернулся бы вокруг DatagramSocket
, чтобы управлять JayPacket <--> DatagramPacket
преобразованиями.