Ron*_*nin 0 .net c# code-duplication
我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;
}
}
Run Code Online (Sandbox Code Playgroud)
不要错误地创建基类来共享该方法.这是继承的常见滥用.这种技术一般会中断,你会在类的公共接口中引入一个无意义的类.继承不适用于代码共享.这是"Liskov替代".
相反,创建一个静态帮助器方法,它将两个值作为参数并计算结果.这允许您实现一次格式化.这很容易实现,几乎总是有效,并且不会影响类的公共API.不要害怕稍大的语法占用空间.这不是一个重大问题(大多数时候).
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |