ใช้การประพันธ์ไม่ขยาย (ใช่ฉันหมายถึงการขยายตามที่อ้างอิงถึงคำสำคัญการขยายใน java และใช่นี่คือการสืบทอด) การเขียนเรียงความนั้นยิ่งใหญ่กว่าเพราะมันป้องกันการติดตั้งของคุณอย่างสมบูรณ์ทำให้คุณสามารถเปลี่ยนการใช้งานโดยไม่ส่งผลกระทบต่อผู้ใช้ในชั้นเรียน
ฉันแนะนำให้ลองทำสิ่งนี้ (ฉันกำลังพิมพ์โดยตรงในหน้าต่างนี้ดังนั้นผู้ซื้อระวังข้อผิดพลาดทางไวยากรณ์):
public LimitedSizeQueue implements Queue
{
private int maxSize;
private LinkedList storageArea;
public LimitedSizeQueue(final int maxSize)
{
this.maxSize = maxSize;
storageArea = new LinkedList();
}
public boolean offer(ElementType element)
{
if (storageArea.size() < maxSize)
{
storageArea.addFirst(element);
}
else
{
... remove last element;
storageArea.addFirst(element);
}
}
... the rest of this class
ตัวเลือกที่ดีกว่า (ขึ้นอยู่กับคำตอบของ Asaf) อาจจะห่อApache Collections CircularFifoBufferด้วยคลาสทั่วไป ตัวอย่างเช่น:
public LimitedSizeQueue<ElementType> implements Queue<ElementType>
{
private int maxSize;
private CircularFifoBuffer storageArea;
public LimitedSizeQueue(final int maxSize)
{
if (maxSize > 0)
{
this.maxSize = maxSize;
storateArea = new CircularFifoBuffer(maxSize);
}
else
{
throw new IllegalArgumentException("blah blah blah");
}
}
... implement the Queue interface using the CircularFifoBuffer class
}