|
|
Posted on
2009-11-27 12:41
杨彬Allen
阅读( 178)
评论()
收藏
举报
 抽象學習
using System;
using System.Text;
using System.Collections.Generic;

 /**//// <summary>
/// 抽象學習
/// </summary> public partial class Default2 : System.Web.UI.Page
  {
protected void Page_Load(object sender, EventArgs e)
 {
NameConverter myNameConverter = new NameConverter();
myNameConverter.AddInnerNameConverters(
new ChineseFullNameConverter(),
new ChineseShortNameConverter(),
new EnglishFullNameConverter(),
new EnglishShortNameConverter()
);
Response.Write(myNameConverter.ToString(Day.Friday));
}
}

public abstract class NameConverterBase
  {
public abstract string ToString(Day day);
}

public class ChineseFullNameConverter : NameConverterBase
  {
public override string ToString(Day day)
 {
switch(day)
 {
case Day.Sunday:
return "星期日";
case Day.Monday:
return "星期一";
case Day.Tuesday:
return "星期二";
case Day.Wednesday:
return "星期三";
case Day.Thursday:
return "星期四";
case Day.Friday:
return "星期五";
case Day.Saturday:
return "星期六";
default:
throw new ArgumentOutOfRangeException("day", "Value not supported!");
}
}
}

public class ChineseShortNameConverter : NameConverterBase
  {
public override string ToString(Day day)
 {
switch (day)
 {
case Day.Sunday:
return "日";
case Day.Monday:
return "一";
case Day.Tuesday:
return "二";
case Day.Wednesday:
return "三";
case Day.Thursday:
return "四";
case Day.Friday:
return "五";
case Day.Saturday:
return "六";
default:
throw new ArgumentOutOfRangeException("day", "Value not supported!");
}
}
}

public class EnglishFullNameConverter : NameConverterBase
  {
public override string ToString(Day day)
 {
return day.ToString();
}
}

public class EnglishShortNameConverter : NameConverterBase
  {
public override string ToString(Day day)
 {
return day.ToString().Substring(0, 3);
}
}

public enum Day
  {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
}

public class NameConverter
  {
private StringBuilder m_content = new StringBuilder();

private List<NameConverterBase> m_nameConverter = new List<NameConverterBase>();

 /**//// <summary>
/// 添加一個NameConverter
/// </summary>
/// <param name="innerNameConverter"></param>
public void AddInnerNameConverter(NameConverterBase innerNameConverter)
 {
if (m_nameConverter.Contains(innerNameConverter))
return;
m_nameConverter.Add(innerNameConverter);
}

 /**//// <summary>
/// 添加一堆NameConverters
/// </summary>
/// <param name="innerNameConverters"></param>
public void AddInnerNameConverters(params NameConverterBase[] innerNameConverters)
 {
foreach (NameConverterBase innerNameConverter in innerNameConverters)
 {
AddInnerNameConverter(innerNameConverter);
}
}

public string ToString(Day day)
 {
foreach (NameConverterBase innerNameConverter in m_nameConverter)
 {
m_content.AppendFormat("{0} ", innerNameConverter.ToString(day));
}
return m_content.ToString().TrimEnd();
}
}
|