2014-03-05 72 views
3

所討論的模式涉及一個抽象類,它具有一些可以工作的方法,然後調用抽象方法。該類用於在匿名類中進行子類化,並指定抽象方法的行爲。舉個例子:在Java中使用匿名類的模式有沒有名稱?

/* The abstract class */ 
abstract class WebCall { 
    String url; 

    WebCall(String url) { 
     this.url = url; 
    } 

    void call() { 
     // Make call to url 
     // Callback 
     if (worked) { 
      success(); 
     } else { 
      failure(); 
     } 
    } 

    protected abstract void success(); 

    protected abstract void failure(); 

} 

和你會使用類,像這樣:

new WebCall(someUrl) { 
    @Override 
    protected void success() { 
     // Implementation 
    } 

    @Override 
    protected void failure() { 
     // Implementation 
    } 
}.call(); 

一個現實世界的例子是從Android的AsyncTask。這種模式有一個共同的名字嗎?

+0

聽起來像一個功課問題? – Fuhrmanator

+0

沒有。我在AsycTask的Android項目中使用它,並且使用該模式昨天重構了一個混亂的異步webcall,這讓我想知道它是否有名字。 – evanjdooner

回答

5

它被稱爲Template Method並且與使用匿名類沒有特別的關係 - 這是一個實現細節。

+0

好的。我明白,匿名類不是強制性的,但這是我看到它使用的唯一方式。 – evanjdooner