什么是面向接口编程?什么是面向接口编程? 

解决方案 »

  1.   

    面向对象设计里有一点大家已基本形成共识,就是面向接口编程,我想大多数人对这个是没有什么觉得需要怀疑的。问题是在实际的项目开发中我们是怎么体现的呢? 难道就是每一个实现都提供一个接口就了事了?反过来说,你有时候有没有觉得接口是多余的事? 又或者,你仅仅是觉得现在类似spring这样的框架已习惯用接口这种方式而心存当然。 设计模式解析里提到了面向对象设计考虑的几个视角,一个是概念层,一个是规约层,一个是实现层。我如果没有猜错的话,实际上我们大多数人的眼睛一直是盯着实现层的,而这正是面向对象设计所极力避免的,即你不要在一开始就关注这些细节,你要关注的是规约(接口).对于实际项目开发来说,如果我们把实现的过程分为多个阶段的话我们不妨这么划分,第一阶段,根据client端的需要去设计我们的规约(interface),在这个阶段任何实现都没有,所有的任务就是定义接口所需要的职责,以及所需要的一些po,vo;第二阶段,实现前面定义的规约。而以前我是怎么做的呢? 我是交叉作的,即假模假样的定义一个接口(其实我心里在想这个东西有屁用),然后定义了一个方法,然后就立即去实现这个方法,再然后我又定义一个方法,继续去实现,我现在终于想通了,这样好累,效率很低,最重要的是,这不属于真正的设计。
    现在我是怎么做的呢?比如一个list.jsp里需要查询,列表,然后看明细信息,然后增加信息,我会第一步在接口里定义完(这个过程会有整体设计的意识),毫不关心底层实现(数据库、事务),我的目标就是"我想要这个功能,我想要那个功能",至于那个功能怎么实现在第一阶段我认为那不是我的事情(尽管这个事情最终还是由我来做) .大家看这个过程和前面的过程有什么本质的不同呢? 就是分层的概念更加明显,你的工作更有层次,每次都有先设计再实现的步骤,而前面那个过程很容易就让你不知不觉地陷入纯实现的陷阱中。大家分享
      

  2.   

    public interface MyInterface;
    {
        public void a();
        public void b();
        public void c();
        .....}public class Impl1 implements MyInterface

         ///...implements each abstract method here
    }class Test
    {
        main()
        {
            MyInterface mi = new Impl1();
            mi.a();
            mi.b();///.........
        }
    }定义接口类型的变量,让该变量指向实现类的对象,此乃面向接口编程
      

  3.   

    依赖接口,而不依赖于具体实现。最通常的做法是用接口引用实现,是多态的典型应用,如楼上的朋友所写
    MyInterface mi = new Impl1();
    或者将一具体实现类传入接口参数,如将mi传入doSomething(Interface iface)
    面向接口编程最大好处是解耦
      

  4.   

    把接口理解成规范则实现接口的类就是按照接口中的规范提供一定的服务,而不去理会你是为谁服务
    使用接口的类,就是享受接口规范中提供的服务,而不用理会是谁为你提供的服务无论是实现,还是使用,看到的都是规范,也就是实现了程序模块之间的低耦合现实的例子:
    中国民用电力规范是:220V,50Hz的正弦交流电;家里的电源插座就是电力服务的提供者,是接口的实现者,它只管按照这个规范提供服务,而不管它是为哪种电器服务;家里的家用电器按照这个规范享受服务,而不管电源是来自火力发电厂还是家用柴油发电机。
    java 中的例子:
    JDBC的几个接口:Connection、Statement、ResultSet,它们都是接口,怎么理解楼主自己去思考
      

  5.   

    举个简单的例子:HttpservletRequest是javax包下的接口类,所有应用服务器厂商都有自己的实现,比如tomcat有自己的servlet.jar包,WebSphere有自己的IBMServlet.jar包,WebLogic也有...etc这就是接口的概念:定义公用的方法,所有实现接口的类有自己的实现逻辑
      

  6.   

    话不多说  给你几个简单例子
     电脑都用过撒  上面有USB接口撒  看好了
    虽然我不知道是谁第一个发明了USB接口还规定了它就长成那样  但是现在  所以的电脑附件生产商就必须的按照那个规定去生产他的USB鼠标USB键盘  这就是一个面向接口的现实实例  应该懂了吧
      为什么要面向接口  也举个例子
    以前说面向对象  那好  我现在要造一个飞机  没错  飞机就是一个对象  它有很多属性  但是  你是否发现这个对象有些庞大而不好把握   那么  现在 我们来拆分一下
      飞机  俩翅膀都看到了吧  我们可以使用面向接口的思想   定义好翅膀的属性和它的方法  先造好一堆翅膀
    然后依此类推  引擎啊什么的 我们都一一的按照接口给造出来  然后组装就是一个大的飞机对象了
    完毕  还有不懂的  欢迎问我
      

  7.   

    面向接口是设计模式中提出的,为的是可以规定实现类的接口,程序中使用接口的后以后如果有新的实现类可以迅速换掉而不修改其它任何方法或属性减少代码的维护成本(如果有工厂类的话源代码中可以只要修改工厂类),此外,如果使用了spring框架后甚至可以不用修改源代码就可以完成实体类的修改。