public abstract class BaseProcessor
{
public abstract void Initialize();
private readonly string _executerPluginName;
private readonly ILogService _logService;
public BaseProcessor(string executerPluginName, ILogService logService)
{
this._executerPluginName = executerPluginName;
this._logService = logService;
}
protected void CallExecutor()
{
this.Initialize();
//common logic
}
}
public class ConcreteProcessor : BaseProcessor
{
public override void Initialize()
{
//concrete logic
}
public ConcreteProcessor(string executerPluginName, ILogService logService) : base(executerPluginName, logService)
{
}
}
AND
public abstract class BaseProcessor
{
public abstract void Initialize();
protected abstract string ExecuterPluginName { get; }
protected abstract ILogService LogService { get; }
protected void CallExecutor()
{
this.Initialize();
//common logic
}
}
public class ConcreteProcessor : BaseProcessor
{
protected override string ExecuterPluginName { get{ throw new NotImplementedException(); } }
protected override ILogService LogService { get{ throw new NotImplementedException(); } }
public override void Initialize()
{
//concrete logic
}
}
What kind of inheritance more preferable ? I'm going to use second solution, but i have some doubts about quantity of abstraction. Can you give some explanation about these approaches?
Aucun commentaire:
Enregistrer un commentaire