精华内容
下载资源
问答
  • 1.只要分层,就涉及到接口来连接。各层之间只通过接口来向外暴露功能。 2.spring中service层调用dao层时候,service层声明接口变量,具体接口实现可以ioc注入...

    1.只要分层,就涉及到接口来连接。各层之间只通过接口来向外暴露功能。

    2.spring中service层调用dao层时候,service层声明接口变量,具体接口实现可以ioc注入

    展开全文
  • 面向接口编程正是java的优点,首先 用起来方便,结构清晰在j2ee中的接口也就是类,类与类之间的通信因为接口而变的简单易懂呵呵,像J2EE中的API规范基本上都是接口,由各应用服务器来实现,比如:WebSphere按照这...

    面向接口的编程正是java的优点,首先 用起来方便,结构清晰

    在j2ee中的接口也就是类,类与类之间的通信因为接口而变的简单易懂

    呵呵,像J2EE中的API规范基本上都是接口,由各应用服务器来实现,比如:WebSphere按照这个接口实现自己的,WebLogic也按照这个接 口实现自己的,作为开发者来说我们根本就不用去管谁是怎样实现的,只要按照J2EE的API

    来写就可以了,根本用不着导入它们的实现包,实际上具 体的是由它们自身完成了。

    接口说白了,也就是定死了一个框,具体的是糊红纸还是糊黑纸我们都用不着去管的,我们只要知道它是个框,提供

    了 哪些方法就够了。

    举个简单的JDBC的例子吧,比如有个BaseDao接口,现在有MySQLDao实现了一个(我们可以把具体的实现类 配在配置

    文件中,再通过反射进行实例化),也就类似这样的:

    BaseDao dao = (BaseDao)(Class.forName(Config.getDaoName()).newInstance());

    其中 Config.getDaoName()可以获得配置文件中的配置,比如是:com.bao.dao.impl.MySQLDao。

    之 后,那些人开始要烧钱了,要改用Oracle了,这样我们只要按BaseDao的定义,再实现一个OracleDao就可以了,

    再将配置文件中的 配置改为:com.bao.dao.impl.OralceDao就可以了,而在已经写好的代码中,我们可以一行不

    改的进行了数据库移植,这个就 是面向对象设计原则中的“开-闭原则”(对增加是开放的,对修改是封闭的)。但

    这只是理论上的,现实中很难做到的。

    接口 = 电脑的USB插口!

    因为接口订好了,所以那面到底插的是什么就不重要了!

    我们用户只需要

    1 插上去

    2 停用移动设备

    3 拔下来

    这三个就好似USB的接口功能。他隐藏了实际功能,但提供给用户统一的操作界面和使用方式

    写小的应用程序看不到接口的优势,写大点的程序马上就显示出接口的优势,越大越明显.所以还是从现在开始养成面向接口编程的习惯.写多了程序就会觉得优势 显而易见.

    链条组装起来了,然后向上面挂东西.....挂的东西可以随时拿下来,可以随时替换掉,可以随时安上去.......

    子类只能继承一个父类

    却可以继承多个接口..功能区分清晰,改起来方便

    够了吧

    多给点

    优点:

    接口和实现分离了,适于团队的协作开发。

    更具体的优点:可以参看IDP原则。

    缺点:

    设计难了,在你没有写实现的时候,就得想好接口,接口一变,全部乱套,这就是 所谓的设计比实现难。

    主要为了实现松散耦合的系统,便于以后升级,扩展.你去研究一下spring吧,那东东会让你真正体会到interface的优点.

    接口,主要是为了 弥补 JAVA 丢失的 多继承性 的特点吧 。。。

    封装好,好使用

    易扩展

    容易让人把编写程序和现实联系起来。呵呵

    接口在项目中用的比较多的原因是,当你调用别人的接口时可以不用部署,直接引用就行了。

    我记得我曾经在一篇帖子中提到过,一个接口可以从三方面去考察:

    制 定者(或者叫协调者),实现者(或者叫生产者),调用者(或者叫消费者)。

    接口本质上就是由制定者来协调实现者和调用者之间的关系。

    所以通常说的 “面向接口编程”可以理解为:

    只有实现者和调用者都遵循“面向接口 编程”这个准则,制定者的协调目的才能达到。

    一个老生常谈的例子就是JDBC。

    很多人费解:既然我每连接 一种数据库(如mysql)都要事先部署驱动程序,那我直接访问驱动程序不就行了?还要JDBC干吗?

    实际上,JDBC已经起了至关重要 的作用了:正因为驱动程序是按照JDBC所规定的方法编写的,你才可以按照JDBC的方式去使用。

    换句话说,如果驱动程序提供者不按照JDBC标 准来编写,而是按它自己独创的方式编写,那么你在使用驱动程序的时候就要花时间查看驱动程序的文档以搞清楚用法。而当你日后决定使用另一种数据库的时候, 这种数据库的驱动程序也不是按照JDBC编写的,你又得去搞清楚另一套完全不同的用法,而你的所有代码都必须做相应的更改。这种代价是不可想象的。

    而 现在的情况是,驱动程序提供者都按照JDBC规定的方式来编写,程序员都按照JDBC规定的方式来使用。程序员不用关心自己正在使用何种数据库,而驱动程 序编写者也不用费尽心力去编写接口文档来向程序员解释驱动程序的用法,大家都向标准看齐就行了。

    转载自:http://www.java123.net/JavaSE/mianxiangjiekoubianchengdehaochuheyoudian_7139.html

    posted on 2011-06-02 23:04 sky.wind 阅读(1337) 评论(0)  编辑  收藏

    展开全文
  • 一、像J2EE中的API规范基本上都是接口,由各应用服务器来实现,比如:WebSphere按照这个接口实现自己的,WebLogic也按照这个接口实现自己的,作为开发者来说我们根本就不用去管谁是怎样实现的,只要按照J2EE的API来...

    一、

    像J2EE中的API规范基本上都是接口,由各应用服务器来实现,比如:WebSphere按照这个接口实现自己的,WebLogic也按照这个接口实现自己的,作为开发者来说我们根本就不用去管谁是怎样实现的,只要按照J2EE的API来写就可以了,根本用不着导入它们的实现包,实际上具体的是由它们自身完成了。

    接口说白了,也就是定死了一个框,具体的是糊红纸还是糊黑纸我们都用不着去管的,我们只要知道它是个框,提供了哪些方法就够了。
    举个简单的JDBC的例子吧,比如有个BaseDao接口,现在有MySQLDao实现了一个(我们可以把具体的实现类配在配置文件中,再通过反射进行实例化),也就类似这样的:
    BaseDao dao = (BaseDao)(Class.forName(Config.getDaoName()).newInstance());
    其中Config.getDaoName()可以获得配置文件中的配置,比如是:com.bao.dao.impl.MySQLDao。

    之后,那些人开始要烧钱了,要改用Oracle了,这样我们只要按BaseDao的定义,再实现一个OracleDao就可以了,再将配置文件中的配置改为:com.bao.dao.impl.OralceDao就可以了,而在已经写好的代码中,我们可以一行不改的进行了数据库移植,这个就是面向对象设计原则中的“开-闭原则”


    二、

    在项目中的意义:
    接口在项目就是一个业务逻辑,面向接口编程就是先把客户的业务提取出来,作为接口。业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件(例如Spring框架)中该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。 采用基于接口编程的项目,业务逻辑清晰,代码易懂,方便扩展,可维护性强。即使更换一批人员,新来的人依然可以快速上手。对于公司来说,意义更大。
    在Java中的意义: 
       Java本身也是一个不断完善的语言,他也在频繁的改动他的系统API来完善,他的API是一个庞大的体系,互相关联,如果不采用接口,而都是用实现类的话,那么API的改动就会给整个体系带来不稳定。而且如果改动API,那么就会有大量采用旧API的项目因无法正常运行,会损失大量客户。换句话说,JDK已经发布的API是一种承诺,一经发布就不能更改,即使原来API存在各种各样的问题(例如java.util.Properties类就是一个失败的例子)也必须保留,于是在Java里就出现了不建议使用的方法,但JDK依然提供该方法。而且Java语言本身是一个跨平台的语言,为了满足在各个平台下运行,就必须把各种操作做成接口,在编写各个平台下的实现类。
    设计模式的体现: 
       在设计模式的原则里的开闭原则,其实就是要使用接口来实现对扩展开放,对修改关闭。在设计模式的其他原则里也有关于基于接口编程的原则,即依赖倒转的设计原则(DIP)----高层模块不应该依赖于底层模块。二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象(注:来自《敏捷软件开发--原则、模式与实践》Robert C.Martin著)。在使用面向接口的编程过程中,将具体逻辑与实现分开,减少了各个类之间的相互依赖,当各个类变化时,不需要对已经编写的系统进行改动,添加新的实现类就可以了,不在担心新改动的类对系统的其他模块造成影响 

    接口本质上就是由制定者来协调实现者和调用者之间的关系。
    所以通常说的“面向接口编程”可以理解为: 
    只有实现者和调用者都遵循“面向接口编程”这个准则,制定者的协调目的才能达到。 
    一个老生常谈的例子就是JDBC。
    优点: 
    接口和实现分离了,适于团队的协作开发。 
    主要为了实现松散耦合的系统,便于以后升级,扩展。
    缺点: 
    设计难了,在你没有写实现的时候,就得想好接口,接口一变,全部乱套,这就是所谓的设计比实现难。 
    所以设计接口的人工资都高啊!!!


    三、

    比如说,你要注册一个用户,前面是业务逻辑,要调用数据访问层的save(user)方法。先写一个数据访问对象的接口

    Java code
    public interface IDAO{ void save(User user) throws UserNameExistException;}

    jdbc的实现是  
    Java code
    public class JDBCDAO implements IDAO{ public void save(User user) throws UserNameExistException{ ..... String sql = "insert into t_user values(?,?,?,?)"; .... PreparedStatement pstm = conn.prepareStatement(sql); pstm.setString(1,user.getName()); .... pstm.executeUpdate(); ...... }}
    Hibernate的实现是
    Java code
    public class HibernateDAO implements IDAO{ public void save(User user) throws UserNameExistException{ ...... session.save(user); session.getTransaction().commit(); .... }}

    你的业务层UserService只要这么写
    Java code
    public class UserService{ public void register(String userName,String password,int age,....等等参数){ //假设现在用的是JDBC的实现 IDAO dao = new JDBCDAO();//当你需要替换实现的时候,只要把这个JDBCDAO换成HibernateDAO就可以了,其它代码不需要改。 User user = new User(); user.setName(userName); ...... dao.save(user); }}
    展开全文
  • 面向接口编程正是Java的优点,首先 用起来方便,结构清晰 在j2ee中的接口也就是类,类与类之间的通信因为接口而变的简单易懂像J2EE中的API规范基本上都是接口,由各应用服务器来实现,比如:WebSphere按照这个接口...
    展开全文
  • 不管怎样我们都是为了提倡高内聚和低耦合的思想,这么多种思想是不是看那些概念头晕的不行呢?这里我们主要列举吃饭的例子让大家更直观的理解这几个概念,现在有顾客(客户端)与餐厅(服务端)两个对象 依赖倒置...
  • 接口 接口的命名通常是以大写的 I 开头,后面跟着一个有意义的名字 接口只是负责定义一些接口的方法,其方法的...怎样定义一个接口 如下格式: public interface 接口名 {  在此定义接口体,包括接口的属性...
  • Java-面向对象编程-三大特性之多态

    万次阅读 多人点赞 2017-02-01 18:14:48
    我们前面已经介绍了面向对象编程的三大特性之二,今天就介绍最后一个特性-多态。 什么叫多态?从字面上理解就是多种形态,即对同一个客体,可以有多种不同的形式。就好像糖一样,有多种口味,你想吃什么口味的就...
  • petshop面向接口的思考

    2011-07-11 09:31:00
    petshop是采用面向接口编程思想,接口的有点我之前知道了一些,它是一种规范,更易团队合作开发。 但,接口真的就只有这点优点吗?来看看petshop的接口是怎样实现吧,就说数据访问层吧: IDAL定义了数据访问层的...
  • 怎样让实例化对象有新的方法?属性方法的删除对象的销毁instanceofhasOwnProperty()for in对象的get和set方法函数中变量的作用域 面向对象(OOP)基本介绍 面向对象特性: 封装,此特性可隐藏对象内部的实现细节...
  • JavaScript面向对象编程-创建对象 1. 工厂模式:         考虑到em5无法创建类(我也不知道em6那个玩意儿算不算类),开发人员就发明了一种函数,用函数来封装以特定接口...
  • 我们前面已经介绍了面向对象编程的三大特性之二,今天就介绍最后一个特性-多态。什么叫多态?从字面上理解就是多种形态,即对同一个客体,可以有多种不同的形式。就好像糖一样,有多种口味,你想吃什么口味的就可以...
  • 在讨论面向对象编程和模式(具体一点来说,设计模式)的时候,我们需要一些标准来对设计的好还进行判断,或者说应该遵循怎样的原则和指导方针。现在,我们就来了解下这些原则:单一职责原则(S)开闭原则(O)里氏...
  • 在讨论面向对象编程和模式(具体一点来说,设计模式)的时候,我们需要一些标准来对设计的好还进行判断,或者说应该遵循怎样的原则和指导方针。 现在,我们就来了解下这些原则: 单一职责原则(S) 开闭原则(O) ...
  • 面向对象编程思想(二) - 人的描述 (1)首先需要分析下人应该怎样来描述,如何分类 1.人的分类,可以按照以下几种方式来分类,简单罗列: 按照性别:男人+女人 按照年龄:老年+年轻人 按照肤色:黑人+白人+黄...
  • 到代码是怎样一步一步复活的。 为了更好的理解设计思想,实例尽可能简单化。但随着需求的增加,程序将越来越复杂。此时就有修改设 计的必要,重构和设计模式就可以派上用场了。最后当设计渐趋完美后,你会发现,...
  • 在讨论面向对象编程和模式(具体一点来说,设计模式)的时候,我们需要一些标准来对设计的好还进行判断,或者说应该遵循怎样的原则和指导方针。现在,我们就来了解下这些原则:单一职责原则(S)开闭原则(O)里氏替换原则...
  • 上回《【 .NET Core3.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探》咱们说到了依赖注入Autofac的使用,不知道大家对IoC的使用是怎样的感觉,我个人表示还是比较可行的,至少不用自己再关心一个个复杂的实例...
  • 熟悉面向对象编程的都知道,面向对象编程最重要的原则之一 - 从外部接口划分内部接口。也就是说,针对某一类事物,我们其实并不是那么在乎其内部究竟是怎样去实现的,只关心怎样使用而已。为了理解这点,让我们先来...
  • 文末有地址上回《从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之九 || 依赖注入IoC学习 + AOP界面编程初探》咱们说到了依赖注入Autofac的使用,不知道大家对IoC的使用是怎样的感觉,...
  •  上回《从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之九 || 依赖注入IoC学习 + AOP界面编程初探》咱们说到了依赖注入Autofac的使用,不知道大家对IoC的使用用怎样的感觉,我个人表示...
  • java 基础的几个重要的概念数据:一些不变量与变量方法:函数,一种操作类:包含成员数据,成员...面向对象编程:变量和操作都放在类中操作,可以构造多个构造函数,可以对结构性很好的类继承,可以通过接口,将对...
  • 淡淡的对C++有了更进一步的认识,我在用C++的时候要是做个复杂点的全局设计,总感觉无从下手,一直在思考如何组织整个框架个部分是如何的衔接,怎样抽象出接口,感觉自己被包围在设计模式和各种面向对象编程的规范...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 283
精华内容 113
关键字:

怎样面向接口编程