关于接口的一些事---用途

接口的用途

          很多刚刚接触C#时都会很难理解接口这种类型是作什么用途,我个人认为,理解接口是理解Frnamework框架的一个重要前提。言归正传,接口究竟可以做些什么?先看看以下代码

using System;

namespace Test
{
    
interface IShowMessage
    
{
        
void Show(string strMesg);
    }


    
class Demo : IShowMessage
    
{
        
public void Show(string strMesg)
        
{
            Console.WriteLine(
"You show the message : {0}", strMesg);
        }

    }


    
class DemoFactory
    
{
        
public static Demo CreateDemo()
        
{
            
return new Demo();
        }

    }


    
class Program
    
{
        
public static void Main()
        
{
            IShowMessage sm 
= DemoFactory.CreateDemo();
            sm.Show(
"I am successful!");
        }

    }

    
}

        以上的例子定义了一个IShowMessage接口,实现此接口的类都能在后台输出信息,Demo类就是实现IShowMessage接口的一个类,所以Demo就具有向后台输出一条信息的能力了。大家有没有注意到我在Main()中并不是直接用Demo类创建实例,而是通过DemoFactory类中的一个静态方法CreateDemo()创建,这样做有什么好处?这是为了应付一些需求变化,有些需求变化会导致Demo类变得一无是处,我需要重新创建另一个类,并同时实现IShowMessage接口,这时我需要向后台输出两条信息,或者我要将信息写入到一个文本文件中,这时只需要在DemoFactory中将 “return new Demo” 改成 “return new NewDemo” ,这样,在应用程序中凡是 "IShowMessage sm = DemoFactory.CreateDemo" 中的sm接口对象就会应用了NewDemo中的Show方法。
         或许你会觉得可以直接在原来的Demo类中改,对!你完全可以这样做。此时我们又带大家去到另一个场景。大部份应用程序都是直接与数据库打交道,你可以定义一个访问数据库的接口(比如:IData),例如新增、删除、修改、查询等操作,建立一个数据库操作类(比如叫做DataAccess,专门对Access数据库进行操作)来实现此接口,其他的类都是通过此DataAccess类对数据库进行新增、删除、修改、查询等操作。如果以后有客户需要用SqlServer作为数据库,这时只要创建一个实现IData接口的类,并在工厂方法中将旧类的地方修改成新类,这样应用程序的数据访问就变成对SqlServer进行操作。
       以上是我对接口的一些理解,最重要的是多思考,举一反三。

posted on 2007-07-06 11:35  Ah Yuan  阅读(227)  评论(0编辑  收藏  举报