2016-03-01 142 views
4

而不是有一個公共的虛擬方法,你有一個公共密封的方法,調用一個受保護的虛擬方法。事情是這樣的:這種繼承設計模式的名稱是什麼?

public class Test { 

    public void DoStuff(){ 
     // Do stuff here... 
     ProtectedDoStuff(); 
     // Do more stuff... 
    } 

    protected virtual void ProtectedDoStuff(){ 
     // Do stuff... 
    } 
} 

相反的:

public class Test { 

    public virtual void DoStuff(){ 
     // Do stuff here... 
     // Do a lot of stuff... 
     // Do more stuff... 
    } 
} 

public class Test2 : Test { 

    public override void DoStuff(){ 
     // Do same stuff as base 
     // Do different stuff 
     // Do more stuff just like base 
    } 
} 

這避免從公衆方法重新實現所有功能,如果將所有需要的時間。 我知道這已經問stackoverflow但我找不到問題。

+1

這被稱爲[「模板方法模式」](https://en.wikipedia.org/wiki/Template_method_pattern) –

回答

5

這是模板方法模式。從Wikipedia

模板方法模式是定義的方法中的一個算法,稱爲模板的方法,其中推遲一些步驟,以亞類的程序骨架的行爲的設計模式。它可以讓我們在不改變算法結構的情況下重新定義算法的某些步驟。