接口模型

下面是我学习接口模式的摘抄,和一些心得。

按照接口的定义方法,他是一些方法和字段的一个集合。通过使用接口可以简化编码,提高效率。下面就看一个例子从中体会一下使用接口的好处。


 1 None.gif using  System;
 2 None.gif using  System.Collections.Generic;
 3 None.gif using  System.Text;
 4 None.gif
 5 None.gif namespace  Lesson10
 6 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 7InBlock.gif    // 定义一个表示所有物品的接口
 8InBlock.gif    // 这个接口有一个字段表示这个物品的名字
 9InBlock.gif    // 有一个方法用来显示这个物品的信息
10InBlock.gif
11InBlock.gif    public interface Objects
12ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
13ExpandedSubBlockStart.gifContractedSubBlock.gif        string Name dot.gifget;}
14InBlock.gif        void ShowInf();
15ExpandedSubBlockEnd.gif    }

16InBlock.gif
17InBlock.gif    // 定义一个桌子类
18InBlock.gif    class Table : Objects
19ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
20InBlock.gif        private string name;
21InBlock.gif
22InBlock.gif        public Table(string name)
23ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
24InBlock.gif            this.name = name;
25ExpandedSubBlockEnd.gif        }

26InBlock.gif
27InBlock.gif        public string Name
28ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
29ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gifreturn name; }
30ExpandedSubBlockEnd.gif        }

31InBlock.gif
32InBlock.gif        public void ShowInf()
33ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
34InBlock.gif            Console.WriteLine("这是一个" + name + " 长:120  宽:60  高:90");
35ExpandedSubBlockEnd.gif        }

36ExpandedSubBlockEnd.gif    }

37InBlock.gif
38InBlock.gif    // 定义一个键盘类
39InBlock.gif    class Keyboard : Objects
40ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
41InBlock.gif        private string name;
42InBlock.gif
43InBlock.gif        public Keyboard(string name)
44ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
45InBlock.gif            this.name = name;
46ExpandedSubBlockEnd.gif        }

47InBlock.gif
48InBlock.gif        public string Name
49ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
50ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gifreturn name; }
51ExpandedSubBlockEnd.gif        }

52InBlock.gif
53InBlock.gif        public void ShowInf()
54ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
55InBlock.gif            Console.WriteLine("这是一个" + name + " 长:60  宽:15  厚:3");
56ExpandedSubBlockEnd.gif        }

57ExpandedSubBlockEnd.gif    }

58InBlock.gif
59InBlock.gif    class Program
60ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
61InBlock.gif        static void Main(string[] args)
62ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
63InBlock.gif            Objects test = new Table("电脑台");
64InBlock.gif
65InBlock.gif            CustMethod(test);                           // 注意这里传入的是一个Objects接口的一个实例
66InBlock.gif
67InBlock.gif            CustMethod(new Keyboard("标准键盘"));       // 注意这里传入的是一个KeyBoard类的一个对象实例
68InBlock.gif
69InBlock.gif            Console.ReadKey();
70ExpandedSubBlockEnd.gif        }

71InBlock.gif
72InBlock.gif        // 注意这里传递的是一个接口的实例,而不是一个普通的对象
73InBlock.gif        // 这个方法可以看作是对所有实现这个接口的对象按照接口所定义的属性或方法,来操作这些对象的通用方法
74InBlock.gif        // 这样做可以减少代码编写工作量,把相同的操作。或对具有相同方法或属性的一批对象实现一个通用的方法
75InBlock.gif        public static void CustMethod(Objects objects)
76ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
77InBlock.gif            Console.WriteLine(objects.Name);
78InBlock.gif            objects.ShowInf();
79ExpandedSubBlockEnd.gif        }

80ExpandedSubBlockEnd.gif    }

81InBlock.gif
82ExpandedBlockEnd.gif}

83 None.gif

通过这段代码可以看到,如果对某一类具有相同属性或方法的对象进行操作时,可以对这些对象进行一些统一的操作。

例如:可能我们需要显示不同数据源中数据集的明细,这样我们需要一个统一的方法来显示来自不同数据集的数据,又可能这些数据源提供的数据是各种各样的。这是我们就可以定义这样一个接口,他有一个方法该方法返回一个DataSet数据集。然后给每个数据源,创建一个类。这些类都实现这个接口所定义的返回DataSet数据集的方法。这样一来,我们就可以通过另外一个通用方法来吧这些表示不同数据源类的对象所包含的数据进行显示了。

类似的应用情景还有很多。需要大家在实际项目中体会。


洪虎

2006-10-10

转载于:https://www.cnblogs.com/eric1394/archive/2006/10/11/525800.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值