2015-04-19 30 views
0

這裏是我的使用情況,如何執行具體實例作爲參數?

public interface dataModel { 
    //nothing 
} 
public interface dataRepo { 
    public doIt(dataModel a); 
} 
public class concreteDataModel implements dataModel { 
    public doIt(dataModel a); 
} 
public class concreteDataRepo implements dataRepo { 
    public doIt(dataModel a); 
} 

我覺得像我這樣做是錯誤的。我有幾個datarepo和datamodel。我想回購需要它自己的數據模型。有沒有任何設計模式可以使這個清潔?

+0

你是什麼意思了自己kind'的'是什麼意思?給出一個禁止和允許的具體示例 – Dici

回答

2

您可以使用泛型。

public interface dataModel { 
    //nothing 
} 
public interface dataRepo<T extends dataModel> { 
    public doIt(T a); 
} 
public class concreteDataModel implements dataModel { 
    public doIt(dataModel a); 
} 
public class concreteDataRepo implements dataRepo<concreteDataModel> { 
    public doIt(concreteDataModel a); 
} 
+0

是不是'公開doIt(dataRepo a)'?他說「自己的種類」,這就是我問的原因。 – Dici

+0

@Dici你指的是哪一行?我的理解是,他希望將數據模型和數據庫一起綁定到datarepo實現上。也許OP可以稍微更新他的問題。 – Leon

+1

你改變了!在dataRepo中,但實際上我希望OP澄清它的問題,我不確定我是否理解它,所以我的意見可能不相關 – Dici

0

你可以試着仿製藥:

interface dataModel { } 
class concreteDataModel implements dataModel { } 

interface dataRepo<E extends dataModel> { 
    public void doIt(E a); 
} 

class concreteDataRepo implements dataRepo<concreteDataModel> { 

    @Override 
    public void doIt(concreteDataModel a) { 

    } 
}