假设我有两个列表类,一个是双队列列表,另一个是FIFO列表。这两个类有自己的que / deque / set / get方法,但有没有办法可以使用FIFO类中的方法同时使用FIFO对象和双队列?
class FIFOque {
public void put(object ob){//puts an item in the top of the queue }
public object remove(object ob){//removes the object from the top of the queue}
}
class DoubleQueueList{
public void DoubleFrontPut(object ob){//puts an item in the front of the queue }
public void DoubleBackPut(object ob){//puts an item in the back of the queue }
public object removeFront{//removes the object from the front of the queue}
public object removeBack{//removes the object from the back of the queue}
}
我的问题是,如果有办法可以使用同时放置的方法
FIFOque and a DoubleQueueList object, for example :
FIFOque ob1=new FIFOque();
DoubleQueueList ob2=new DoubleQueueList();
ob1.put(object ob);//puts ob in the top of the queue
//this is what I want to know if it is possible
ob2.put(object ob);//puts the ob item in front/back of the DoubleQueueList
如果有办法使用FIFO类的方法将对象放到DoubleQueueList的前面/后面
答案 0 :(得分:0)
编写一个界面。顾名思义它只提供常用功能的界面。在您的方法中,您可以替换所有用途,例如FIFO
使用界面,然后它将接受这两个实现。
public interface Container {
public void set(int i, E val);
public E get(int i);
// ...
}
在两个类中都继承自接口:
public class Deque implements Container {
// ...
}
然后使用界面而不是方法中的特定实现。
public void doSmthWithAContainer(Container c) {
E e = c.get(2);
}
答案 1 :(得分:0)
你需要做出决定:
//puts the ob item in front/back of the DoubleQueueList
你想把它放在前面还是后面?你必须从两者中选择一个。在您选择之后,您可以添加如下方法:
public void put(object ob){
DoubleFrontPut(ob);
// or
DoubleBackPut(ob);
}
然后,您可以在put
上致电DoubleQueueList
。
您还可以创建新接口并使两种队列类型实现它:
public interface Putable {
void put(object ob);
}
class FIFOque implements Putable{ ...
class DoubleQueueList implements Putable{ ...
现在你可以这样做:
Putable ob1=new FIFOque();
Putable ob2=new DoubleQueueList();
ob1.put(obj1);
ob2.put(obj2);