2017-05-27 26 views
0

實現抽象方法的設計的最佳方式是什麼,但是還必須從子類實現。這聽起來此刻很生疏,所以我將舉例說明:將部分實現添加到抽象方法

abstract class Foo { 
    abstract void update(); 
} 

abstract class Bar { 
    void update() { 
     //Do something 
     update_(); 
     //Do something else 
    } 

    abstract void update_(); 
} 

所以基本上,我想辦法一些實施添加到一個抽象方法不停止傳播。我覺得簡單地重命名該方法會產生不潔的代碼。

解決此問題的最佳方法是什麼?它只是重命名該方法?或者這種模式最好完全避免?

+0

Foo的許多子類不是Bar的子類,但是,Bar中也有很多子類。如果我完全在Bar的子類中實現它,它會創建大量冗餘代碼。我在問是否有解決方案來解決這個問題。 –

+0

這基本上是模板方法模式,這很好。您應該爲update_方法找到一個更好的名稱:一個說明方法應該做什麼,並遵守標準命名約定。如果你不想讓子類能夠(或者意外)重寫update()方法,它應該是final的。 –

+0

你可以這樣做嗎?讓'useUpdate()'調用'abstract update()'? – c0der

回答

0

我想你要做的是創建Strategy pattern。簡單地說,你需要創建一個抽象類並實現一個使用許多已經沒有實現的抽象方法的主要方法。