2012-06-28 91 views
1

我很好奇這是什麼類型的設計模式。這是一個常見的設計模式,可能委託模式?

我有一個方法,比如說dao.read()。

dao.read(a) { 
    b = a.moreFields 
    b.readField1(); // I want to move these calls ... 
    b.readField2(); 
    b.readField3(); 

    a.rootField1(); 
} 

比方說,我是重構read方法到這一點:

dao.read(a) { 
    marshal(a.b) 
    a.rootField1() 

    marshal(b) { 
     b.readField1(); // I want to move these calls ... 
     b.readField2(); 
     b.readField3();  
    } 
} 

這是重構爲一個設計模式?或者只是重構。我在問,因爲我傾向於這種類型的重構,並想給它一個名字。如果我將該方法編組移動到一個委託類,我想這是委託。

+2

名稱爲「Extract method」,它不是設計模式,但可能被稱爲「重構模式」,因爲該模式不存在於最終結果中。提取方法的動作遵循該模式。 –

+0

它看起來也像'門面'一樣,經典的門面。在這種情況下,編組方法是一個更大的代碼體的簡化界面。 http://en.wikipedia.org/wiki/Facade_pattern –

+1

不,門面是非常不相關的。它適用於您的外部API與您的目的有些不匹配的情況,因此您需要構建一個代碼的外觀層,以適應API的界面以更好地適應您的目的。 –

回答

0

這不是一個desgn模式。充其量,它是「多態性」,這是OOP的基本特徵。您可以將處理添加爲對象a的類A和對象b的B的方法。嘿將分享接口

interface Marshall { 
    void marshall(<...>); 
} 

...但是是不同的類。

一旦你這樣做,明顯的DP是使用同時包含A和B的複合,並做

composite.marshall(<....>); 
0

您有什麼還沒有一個設計模式,但輔助方法。