1. 接口:
A. 接口的好处: 1) 接口是对继承单根性的扩展(继承只能是单根继承,而接口可以实现多个)。 2) 接口是一种规范和标准,可以约束类的行为(即类的方法)。 3) 接口屏蔽了实现的细节。(即用户只能使用,无法看到代码,体现了接口的安全性)。 4) 接口的使用方便团队协作开发。 5) 接口的通用性。 6) 接口可以作为参数及返回值传递,实际上接口作为参数及返回值时,传递的都是实现了接口的对象。 B. 接口使用的注意事项: 1) 接口中可以包含字段、属性、方法、索引器等,但都不能实现,即可以有,但没有用。接口中只能实现方法。 2) 接口的方法只有方法的声明,没有方法体,这一点与抽象方法想同。示例如下: public interface IPerson { string Run();//只有方法声明而没有方法体 } 2. 工厂模式: 工厂模式与现实中的工厂差不多,现实中的工厂是生产实体产品的,而.NET中的工厂模式是产生类的对象的。 3. 反射: 反射的作用:1、可以了解程序集的内部结构。 2、可以动态创建类实例 //重点 反射动态创建类实例的示例: #region 反射动态生成本程序集类对象 private void button3_Click(object sender, EventArgs e) { IPerson person = null; InterfaceFactory factory = new InterfaceFactory(); //需要动态生成的类名,由类所在的命名空间和类名组成 string className = ""; if (rdbWritePerson.Checked) { className = "InterfaceTest.WritePerson"; } if (rdbBlackPerson.Checked) { className = "InterfaceTest.BlackPerson"; } person = (IPerson)factory.DynamicCreatPerson(className); MessageBox.Show(person.Run()); } public IPerson DynamicCreatPerson(string className) { IPerson person = null; //根据类名获得产生对象的类型 Type type = System.Type.GetType(className); //根据类型产生对象 person = (IPerson)System.Activator.CreateInstance(type );//重点 return person; } #endregion #region 反射动态生成外部程序集对象 private void button4_Click(object sender, EventArgs e) { IChinesePerson chinesePerson = null; //程序集的名字 string assemblyName = "ChinesePersonFactory"; //需要动态生成的类名,由类所在的命名空间和类名组成 string className = "ChinesePersonFactory.ChinesePerson"; //动态生成类的对象 chinesePerson = (IChinesePerson)System.Reflection.Assembly.Load(assemblyName).CreateInstance(className); //重点 MessageBox.Show(chinesePerson.Say()); } #endregion |