public interface IStone //定义一个接口,名字以大写I开头(通用写法)
{
void Send(Email mail); //定义一个方法,用来发送邮件(接口无法定义属性)

void Send(Email mail); //定义一个方法,用来发送邮件(接口无法定义属性)
}
public class stoneEmailSender : IStone (这个类继承了上面定义的接口,在类里实现接口的具体方法,不实现的话编译时会报错)
{
public void Send(Email mail) //使用接口的好处是各个继承接口的类都需实现相同名称的方法,后面调用方便
{
//实现接口的具体方法
}
。。。。。。
}
使用时
stoneEmailSender myEmailSend = new stoneEmailSender(); //程序员可以使用这个类的接口方法,还能使用其它的非接口公用方法,更换组件时需再次核对代码,很麻烦
IStone myEmailSend = new stoneEmailSender(); //为了限定用户程序员可能不规范的使用, 采用标准服务接口IStone来声明对象, 这样用户就没法去调用只属于stoneEmailSender自己特有的方法了, 更换组件的时候省心不少.
IStone myEmailSend = stoneEmailSenderFactory.Create(); //用工厂模式就更明显了,工厂模式用来推迟组件的实例化,在组件要用到时再读取xml文件,用反射的方法来生成实体类,这样看起来无论声明和实例化都脱离了对具体组件的依赖