2014-04-16 97 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 
}