2014-04-16 103 views
0

我有一個名爲ITaskManager接口包含的方法簽名如下,聲明接口類型的物業另一個接口

public interface ITaskManager 
{ 
    void Initialize(); 
    void CloseConnection(); 
    void OpenConnection() 
} 

而且多了一個接口ITaskScheduler內,

public interface ITaskScheduler 
{ 
    void Schedule(); 
    ITaskManager Task { get; } 

} 

那麼,什麼是好處ITaskManager任務{get; }聲明?

+1

正確**抽象**! –

回答

1

它將提供抽象。 稍後,您可以讓從ITaskManager繼承的各種任務管理器可以說DataBaseTaskManagerFileTaskManager

這樣您就可以在界面級別工作,而不用擔心ITaskManagerITaskScheduler的具體實現。

+0

我知道接口有助於實現泛化,但「ITaskManager Task {get;}」聲明有什麼意義? – Stephy

+0

使用'ITaskManager任務{get; }'你可以得到'TaskManager'的實例來處理特定的'ITaskScheduler'。 這絕對是基於要求。 –

1

您可以擁有多個ITaskManager,並且任務計劃程序需要一個ITaskManager才能生存。

繼承人一個更好的例子:

public interface IResturant 
{ 
    IMenu Menu {get;} 
} 

public interface IMenu 
{ 
    Dictionary<string,double> MenuItems{get;} 
} 

public class BurgerKingMenu : IMenu 
{ 
    // Menu items will contain the whole Burger King menu 
} 

public class KFCMenu : IMenu 
{ 
    // Menu items will contain the whole KFC menu 
} 

public class KFCResturant : IResturant 
{ 
    // will get KFC's IMenu 
} 

public class BurgerKingReturant : IResturant 
{ 
    // will get Burger King's IMenu 
}