2010-09-24 62 views
2

我有這樣的設計:有沒有這樣的設計模式?如何調用它?

public interface MyInterface { 
    public abstract List<Sth> getSth(); 
} 

public class MyConcreteImplementation implements MyInterface { 
    private ConcreteSth mSth = new ConcreteSth(); 

    public List<Sth> getSth(){ 
     return mSth.getSth(additionalParams); 
    } 
} 

的上面的代碼目的是提供將被從其他類稱爲統一方法。

這可以稱爲模式嗎?如果是的話如何命名呢?

+1

誰在乎它叫什麼?你爲什麼需要一個名字?你只是使用一個接口來創建一個API。 – 2010-09-24 13:18:23

+1

@ Erick:當你希望你的同事使用它時,你開始關心一個名字。 – xtofl 2010-09-24 13:23:11

+1

@ Erick:用通俗的術語來討論代碼可能是一件相當有用的事情。能夠使用精確的名稱來減少由更詳細的描述引起的任何潛在的不明確性,並且允許開發可用的速記。 – GaryF 2010-09-24 13:24:29

回答

1

Adapter

的上面的代碼目的是提供將被從其他類稱爲統一方法。

這聽起來很像Adapter。你希望有一個適合你的界面的類。這裏的接口是MyInterface,適配器是ConcreteSth

+0

+1,尚未收到 – Bozho 2010-09-24 18:15:44

-2

工廠方法?

Factory方法模式的本質是「定義創建對象的接口,但讓子類決定實例化哪個類。Factory方法讓類將實例化推遲到子類。

http://en.wikipedia.org/wiki/Factory_method_pattern

+0

這裏沒有創作。 – xtofl 2010-09-24 13:22:08

+0

這不是工廠模式。 – 2010-09-24 13:24:08

0

我將稱之爲一個適配器:它包裝的現有接口周圍的另一種方法(MyInterface.getSth)(即ConcreteSth),而不改變功能。

+0

+1,當之無愧 – Bozho 2010-09-24 18:16:22

3

你只是在這裏基本面向對象設計。這看起來像簡單的Composition對我來說,如果你真的熱衷於設計模式,我可以將它擴展爲delegate的一種形式。

+0

那麼也許我們畢竟不應該有設計模式。它們畢竟只是組合,關係等的組合...... – nanda 2010-09-24 13:26:43

+1

設計模式對缺乏經驗的程序員來說很好,可以學習面向對象設計中可以完成的事情。這是一種完全不同的方式,可以將模式複製到您已經創建以解決問題的代碼上。 – 2010-09-24 13:28:34

+2

我喜歡這個答案(+1) – 2010-09-24 13:30:45

5

它在我看來像一個Adapter。它適應ConcreteSthMyInterface

無論如何,如果它做了您期望的工作,您應該問清楚它是否僅僅出於好奇。

+1

我不認爲它需要能夠告訴適配器它應該使用哪個適配器。 – xtofl 2010-09-24 13:24:51

+0

@bozho - 你對我的回答有什麼看法? :) – willcodejavaforfood 2010-09-24 13:25:10

+0

@xtofl我認爲你應該。否則,它會如何知道要適應什麼? – Bozho 2010-09-24 13:26:43