我觉得我现在的编程习惯还是遇到问题就直接想到编写实现类,基本都没考虑到先用接口什么的。
好多人都说要面向接口编程,但是我实在不知道,什么时候要用接口,感觉都不知道什么时候才需要用到它

解决方案 »

  1.   

    就像他们鼓吹SOA一样,其实DDD才是开发人员的王道
      

  2.   

    个人感觉楼主可以去看看spring的相关理论。
    spring编程应该算是接口编程。
    抽象上感觉根抽象类没什么实质区别。
    不过个人感觉,接口可以解耦。
    解耦就是类与类之间的依赖少了。
    那么相互影响就少。
    随之带来了像便于扩展,便于修改,
    结构清晰等等好处。
    举个简单的例子
    我有一个类,方法dogrun是让狗跑。
    public class A {
    Dog g;
    public void dogrun() {
    g.run();
    }
    }
    可后来我发现我要加一个方法让猫跑。
    public class A {
    Dog g;
    public void dogrun() {
    g.run();
    }
    Cat c;
    public void catrun() {
    c.run();
    }
    }
    代码不好 重构
    public class A {
    Animal a;
    public void run() {
    a.run();
    }
    }
    此时可以看到,我定义一个接口animal
    显然就比单独定义狗猫类要好。
    当然这句话是马后炮。此处之所以用接口不用抽象类是因为
    抽象类对类结构要求严格,使用上有很多不便。
      

  3.   

    我也举个使用接口的例子,比如现在要写个连接数据库的类,现在使用的是mysql数据库,可是以后可能要换其他的数据库比如mssql.这样的话就可以定义一个接口,然后写一个连接mysql的实现类,以后要换数据库了再写个连接mssql的实现类.这样做的好处就是只用更换实现类而不会影响到其他的代码,因为在其他的代码中都调用了接口,接口没有改变只是实现类变了,接口的可扩展性体现了出来.