当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-08-30

    本文导语:  有关C#接口的概念: 1,声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。 2,不能实例化接口,他只能包含其成员的签名。 3,接口不能有构造函数或字段。但可以有属性, 4,因为.NET的接...

有关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#的接口,以及基于工厂模式实现的一个例子,希望对大家有所帮助。


    
 
 

您可能感兴趣的文章:

  • C#学习笔记之C#接口的索引器
  • C#泛型:泛型特点、泛型继承、泛型接口、泛型委托学习笔记
  • PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
  • C#学习笔记之C#的虚方法
  • C#学习笔记之C#中的类
  • C#学习笔记之C#类的初始化
  • C#.NET学习笔记5 C#中的条件编译
  • C#学习笔记之C#只读字段
  • C# 全局变量的学习小结
  • c# 常量与字段学习
  • C#学习笔记之抽象类和抽象函数
  • c# MD5加密的代码(简单示例,仅供学习参考)
  • C# 泛型数组学习小结
  • C#学习笔记之C#结构
  • 实例学习C#中Ref,Out的用法
  • C#学习笔记之扩展方法
  • C#学习笔记之继承
  • C#类的学习笔记之C#构造函数
  • c#进度条ProgressBar学习笔记
  • C# 泛型数组实例学习与总结
  • 实例学习C#中is与As运算符号的用法
  • c# 类型构造器学习
  • c#方法重写和隐藏的学习示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 新手提问:学习c++同时也想学习unix和linux
  • HTML 学习总结及下一步学习教程推荐
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • OpenStack相关学习资料搜集
  • 有最近开始学习Minix的吗?一起来学习吧
  • juqery的python实现:pyquery学习使用教程
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 学习java好 还是学习嵌入式开发好??
  • 学习linux网络编程需要学习些内核知识吗?
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 从Delphi开始学习Java,如何学习Java.欢迎大家的光临!
  • 请问学习JAVABEANS是不是就是学习java.beans.*类库??
  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • 我想学习Unix,请高手给个下载网址,用linux来学习Unix差别大吗?
  • 你们学习Linux是学习什么的?
  • 我想问一个大家,我现在刚学习LINUX,我想问一下在LINUX学习哪些知识有前途???
  • unix下C++代码中如何进行数据库操作?给个完整代码学习学习


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3