C#设计模式之代理类的例子

来源:互联网 发布:cntv中国网络电视台apk 编辑:程序博客网 时间:2024/05/22 13:29
 
C#引入了C语言中的一个独特属性,叫做代理,代理本质上是对另一个类中的函数的引用,可以分派和使用函数而无需要知道它来自哪一个类 ,只要函数满足同样的接口就可以.
下面这个例子很简单,功能就是实现一串字符大小写的转换
做法步骤:
新建一个代理类
//定义代理类需要命名空间using System.IO
  public class DelegateClass
  {
   private delegate string ftxDelegate(string s);
   public class Capital//转换大写的类
   {
    public string fixText(string s)
    {
     return s.ToUpper();
    }
   }
   public class Lower//转换小写的类
   {
    public static string fixText(string s)
    {
                    return s.ToLower();
    }
   }
   public string GetString(bool UpperOrLower,string s)
   {
    ftxDelegate ftxText;
    if(UpperOrLower)
    {
     ftxText=new ftxDelegate(Lower.fixText);
    }
    else
    {
     Capital cpitalclass=new Capital();
     ftxText=new ftxDelegate(cpitalclass.fixText);
    }
    return ftxText(s);
   }
  }
radiobutton和转换按扭上的代码如下:
private void opUpper_CheckedChanged(object sender, System.EventArgs e)
  {
  
   btConvert.Enabled=true;
  }
  private void opLower_CheckedChanged(object sender, System.EventArgs e)
  {
   btConvert.Enabled=true;
  }
  private void btConvert_Click(object sender, System.EventArgs e)
  {
   DelegateClass mydelegate=new DelegateClass();
   string s=txWord.Text;
   string ss=mydelegate.GetString(opLower.Checked,s);
   lsWord.Items.Add(ss);

  }