C#学习笔记之接口与基于接口的工厂模型

发布时间:2020-08-24编辑:脚本学堂
本文介绍下,C#编程中的接口,以及基于接口的工厂模型,有需要的朋友,参考下吧。

有关C#接口的概念:
1,声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。

2,不能实例化接口,他只能包含其成员的签名。

3,接口不能有构造函数或字段。但可以有属性,

4,因为.NET的接口通常是公共契约,例如要与VB兼容,而VB并不支持运算符重载,所以C#中的接口定义也不允许包含运算符。

5,接口定义的成员上不允许声明运算符。

6,接口成员总是公共的,不能声明为虚拟或者静态。如果需要由执行的类来声明。

7,接口是可以继承的。

参才之前有关C#工厂模型的内容,实现一个简单的加减运算器。

①定义接口
IOperation.cs
 

复制代码 代码示例:
namespace 接口 
    { 
        public interface IOperation 
        { 
            /*
             * NumberA和NumberB用来记录数字
             * 这里的这种写法并不算写了执行内容,
             * 编译器可以通过
             * 但在实现该接口的类中还是要在定义一遍
             */ 
            double NumberA 
            { 
                get; 
                set; 
            } 
     
            double NumberB 
            { 
                get; 
                set; 
            } 
     
            /*
             * GetResults方法规定每一个实现该接口的类
             * 都要用定义它的实现过程,否则报错。
             */ 
            double GetResult(); 
        } 
    } 

 ②实现接口
运算类.cs  实现两个类Add(加)和Sub(减)
 

复制代码 代码示例:
namespace 接口 
    { 
        public class Add : IOperation 
        { 
            //实现GetResults方法,两数相加 
            public double GetResult() 
            { 
                double result = 0; 
                result = NumberA + NumberB; 
                return result; 
            } 
     
            //虽然和接口一样写法,但这里算实现,接口中只算定义 
            public double NumberA 
            { 
                get; 
                set; 
            } 
     
            public double NumberB 
            { 
                get; 
                set; 
            } 
        } 
     
        public class Sub : IOperation 
        { 
            public double GetResult() 
            { 
                double result = 0; 
                result = NumberA - NumberB; 
                return result; 
            } 
     
            public double NumberA 
            { 
                get; 
                set; 
            } 
     
            public double NumberB 
            { 
                get; 
                set; 
            } 
        } 
    } 

③,模型核心部分,工厂的实现
根据需要生产不同类(这里指add 和sub)的意思,这就像是工厂做的工作。
工厂类.cs
 

复制代码 代码示例:
namespace 接口 

        public class Factory 
        { 
            //返回类型接口型 
            public static IOperation Count(string operate) 
            { 
                IOperation oper = null; 
     
                /*
                * 按需生成继承了IOperation接口的类
                 * 这里也说明了接口的用途:
                 * 在执行并调用的时候,不必知道oper具体的对象类型,
                 * 只需知道该对象实现了IOperation接口
                 */ 
                switch (operate) 
                {  
                    case "+": 
                        oper = new Add(); 
                        break
                    case "-": 
                        oper = new Sub(); 
                        break; 
                } 
     
                return oper; 
            } 
        } 
    } 

④ 调用示例
 

复制代码 代码示例:
IOperation oper = Factory.Count("+"); 
oper.NumberA = 1d; 
oper.NumberB = 2d; 
Console.WriteLine(oper.GetResult()); 

就是这些了,介绍了C#的接口,以及基于工厂模式实现的一个例子,希望对大家有所帮助。