У меня такой же код в методе Output()
в обоих классах Hour
и Day
. Есть ли способ избежать изменения кода в одном месте вместо двух?Как избежать повторения кода?
class Program
{
static void Main(string[] args)
{
Hour hour = new Hour("20150715 080000");
Day day = new Day(hour);
Console.WriteLine(String.Format("Hour: {0}", hour.Output()));
Console.WriteLine(String.Format("Day: {0}", day.Output()));
}
}
public interface IMoment
{
string OutputMoment();
}
class Hour : IMoment
{
public string Date;
public string Time;
public Hour (string s)
{
string[] parts = s.Split(';');
this.Date = parts[0];
this.Time = parts[1];
}
public string Output()
{
return Date + " " + Time;
}
}
class Day : IMoment
{
public string Date;
public string Time;
public Day(Hour hour)
{
this.Date = hour.Date;
this.Time = hour.Time;
}
public string Output()
{
return Date + " " + Time;
}
}
Суперкласс, который имеет метод 'Output()'. Тогда ваши методы «День» и «Час» расширят его. Конечно, вашему суперклассу нужны объекты «Дата» и «Время». – gh0st