原来接口是这样用的!一个例子搞定接口

转载:http://www.cnblogs.com/cbcye/archive/2011/05/18/2050173.html

原来接口是这样用的!一个例子搞定接口

接口是面向对像编程里的基础知识了。但不得不承认之前对于接口的认识还是不到位的。记得刚毕业的时候从Asp转向.NET开发,接触了面向对像编程的很多知识。由于自己当时对新的知识非常感兴趣。因此在写代码的时候尽量往这些思想上靠拢。现在打开之前写的代码,看了简直要笑喷了。怪不得当时写完之后心理还想着接口好像没啥用啊。。。还增加不少工作量。

下面就先看看我之前是怎么用接口的吧,以下是我在07年的时候写一个域名Whois信息查询的代码片段.

1.之前知道接口是先要先定义的,而且没有实现。所以我基本上把所有会用到的方法都先用接口定义出来。不想图片太大找了一个方法的代码来打开。
这里写图片描述

2.知道方法的实现是在类里的,所以下面代码没有问题。就是引用接口并且具体实现方法

这里写图片描述

3.接口的定义和实现都有了,那么就是实现了。由于第一步就埋下失败的伏笔所以再接下来的使用就成了彻底的杯具了。。

看下图我画的箭头指向的位置,直接实例化类,跟接口没有半毛钱关系。

这里写图片描述

当时,这样开发下来之后还以为自己用了接口了。但是其实是彻底的没有搞懂。包括前面的定义就出现问题了,也就是不是根据接口的特点及面向对像编程的思想来开发的。直接就是霸王强上弓或者说是把接口当作虎皮膏药到哪都贴。

那么既然说了这么多在使用接口时的错误,怎么才能快速就清楚接口的定义和用法呢?具体概念性的东西不多说了。参考涛哥的文章吧《[你必须知道的.NET] 第二回:对抽象编程:接口和抽象类》,我下面要举的是非常简单的例子(不全面)作为入门人员阅读。 借鉴众多园友的评论我在示例中添加了直接传类的调用

using System;
namespace ConsoleApplication4
{
    //接口
    internal interface IMyHandler
    {
        void SayHello();
        void SayMsg(string msg);
    }
    //具体实现类A
    class MyHandlerA :IMyHandler
    {
        public void SayHello()
        {
            Console.WriteLine("Hello from MyHandlerA");
        }
        public void SayMsg(string msg)
        {
            Console.WriteLine(msg+" from MyHandlerA");
        }
    }
    //具体实现类B
    class MyHandlerB : IMyHandler
    {
        public void SayHello()
        {
            Console.WriteLine("Hello from MyHandlerB");
        }
        public void SayMsg(string msg)
        {
            Console.WriteLine(msg + " from MyHandlerB");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //实例化A,用接口类型来声明
            IMyHandler myHandler = new MyHandlerA();
            myHandler.SayHello();
            //实例化B
            myHandler = new MyHandlerB();
            myHandler.SayHello();
            //传接口
            Write(myHandler);
            //传类A
            MyHandlerA myHandlerA = new MyHandlerA();
            Write(myHandlerA);
            Console.Read();
        }
        //接口作为参数类型
        static void Write(IMyHandler myControl)
        {
            myControl.SayMsg("Hello World!!!");
        }
    }
}

其实就是在接口的使用的时候用接口类型来声明,将接口作为参数类型,这两个基础基础的操作。

我知道在博客园这种地方,首页放这样的文章一定会被无数人鄙视的,但我还是想发到首页。让更多人看看接口是如何使用的。这是一到跨向面向对像编程的鸿沟,让尽量多的人能够快速通过这个鸿沟,通向面向对像编程的大道吧:)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通用接口实现类LinkJOS 扩展于:public class LinkJOS extends LinkOAuth2(LinkOAuth2 extends JspEasy) 构造函数 LinkJOS(HttpServletRequest request,HttpServletResponse response) 京东JOS接口访问函数 public String link2(String link,String method,Bag sys,Bag apps,String appSecret,String file,String FileField) 作用:访问京东JOS平台的所有接口 参数: String link,京东JOS平台接口访问地址,目前固定为:https://api.jd.com/routerjson String method,向京东JOS平台提交数据时的方法,需要应用级别参数时建议用POST方法,不需要时用GET(参见后边的实例) Bag sys,系统级别参数书包(一般只需在接口参数文件中放入接口方法即可,参见后边的实例) Bag apps,应用级别参数书包(在接口参数文件中放入必须的应用级别参数,若不需要应用级别参数时直接用new Bag(-1)构造一个空书包即可,参见后边的实例) String appSecret,应用证书中的App Secret,前边已经设置,固定用"@{pPage:app_secret}"即可 String file,调用上传文件接口上传文件(如图片)到京东JOS平台时的文件全名(含相对路径,如:images/logo.png),不是调用上传文件接口时为空字符串即可(参见后边的实例) String FileField,调用上传文件接口上传文件(如图片)到京东JOS平台时的字段名,配合前边的参数,不是调用上传文件接口时为空字符串即可(参见后边的实例) 返回为京东JOS平台接口对应的JSON格式的字符串 JSON文本解析方法 public void parseJson(String json) 作用:解析京东JOS平台接口返回的JSON格式的字符串,并根据内容生成N个对应的书包 参数:String json,京东JOS平台接口返回的JSON格式的字符串 根据JSON文本的内容在系统中生成N个书包,根书包名称为j0,下一层的josn文本内容生成的书包名称用上一层的Key放在上一层的书名中,下边用实例说明寻找对应书包的方法: 如店铺信息查询接口jingdong.vender.shop.query返回的json文本为 { "jingdong_vender_shop_query_responce": { "shop_jos_result": { "open_time": "", "shop_id": "", "category_main_name": "", "category_main": "", "vender_id": "", "brief": "", "logo_url": "", "shop_name": "" } } } 找出店铺信息书包名的方法如下 @{j0:jingdong_vender_shop_query_responce} @{@{pPage:bag}:shop_jos_result} 这时候的@{pPage:bag}即为需要的店铺信息书包名 具体用法请阅读下载包中的《京东卖家如何快速开发网店工具软件》

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值