由java小例子到针对(面向)接口编程

在进行Java编程中经常用到以下类似的代码,

List<String> strs = new ArrayList<String>();  

只知这是多态,像是一种规范而不知为何如此。

  编程时针对超类型(父类)进行编程,也就是说变量的声明类型(或方法的返回类型)是超类型,而不是具体的某个子类。超类型中的各个方法的具体实现不在超类型中,而是在各个子类中。这样在程序执行时可以根据实际状况执行到真正的(某个子类)行为。这样带来的好处是,我们在声明一个变量时无需关心以后执行时的真正的数据类型是哪种(某个子类类型),这是种解耦合(松耦合)的思想。我们之后维护的时候可以随时将声明的变量替换为真正需要要执行的类型,假如在上述代码中当想要换用LinkedList来实现这个功能的时候,其它的代码都不用改,只须要改这一行,因为接口里声明了子类所共有的方法。具有很高的可维护性和可扩展性。所以其实我们还可以换个说法:“针对超类型编程”,超类型则通常是接口或是一个抽象类。

  其实,这便是针对(面向)接口编程(Interface-Oriented Programming),这种设计方式将设计与实现分离。在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了,而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。

更具体的解释参考:http://toyota2006.iteye.com/blog/25232?yyue=a21bo.50862.201879

原文地址:https://www.cnblogs.com/shengpeng/p/8329192.html

时间: 2024-10-09 08:32:51

由java小例子到针对(面向)接口编程的相关文章

java中面向接口编程

面向接口编程详解(一)——思想基础 我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问. 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向

java面向接口编程

在oop中有一种设计原则是面向接口编程,面向接口编程有非常多优点,详细百度一大片.我来谈一下详细的使用中的一些不成熟的见解.! 首先面向接口编程能够消除类之间的依赖关系,使得业务仅仅依赖接口. 这样有什么优点呢? 这种优点大大的.比方说我们声明一个car的接口.我们对车有下面行为,我们能够开车.洗车,推车,修车,拆车等等, 详细用代码实现: package com.panther.dong.faceinterface; /** * Created by panther on 15-8-9. */

Java中的面向接口编程

面向接口编程是很多软件架构设计理论都倡导的编程方式,学习Java自然少不了这一部分,下面是我在学习过程中整理出来的关于如何在Java中实现面向接口编程的知识.分享出来,有不对之处还请大家指正. 接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极好地降低程序各模块之间的耦合,从而提高系统的可扩展性和可维护性.基于这种原则,通常推荐“面向接口”编程,而不是面向实现类编程,希望通过面向接口编程来降低程序的耦合.下面分两种常用场景来示范“面向接口”编程的优势. (一)简单工厂模式 有一个场景,

那些年搞不懂的高深术语——依赖倒置?控制反转?依赖注入?面向接口编程

那些年,空气中仿佛还能闻到汉唐盛世的余韵,因此你决不允许自己的脸上有油光,时刻保持活力.然而,你一定曾为这些“高深术语”感到过困扰.也许时至今日,你仍对它们一知半解.不过就在今天,这一切都将彻底改变!我将带领你以一种全新的高清视角进入奇妙的编程世界,领略涵泳在这些“高深术语”中的活泼泼的地气,以及翩跹于青萍之末的云水禅心. ·内聚 内聚,通俗的来讲,就是自己的东西自己保管,自己的事情自己做. 经典理论告诉我们,程序的两大要素:一个是数据(data),一个是操作(opration).而 PASCA

大话依赖倒置?控制反转?依赖注入?面向接口编程

那些年,空气中仿佛还能闻到汉唐盛世的余韵,因此你决不允许自己的脸上有油光,时刻保持活力.然而,你一定曾为这些“高深术语”感到过困扰——依赖倒置•控制反转•依赖注入•面向接口编程.也许时至今日,你仍对它们一知半解.不过就在今天,这一切都将彻底改变!我将带领你以一种全新的高清视角进入奇妙的编程世界,领略涵泳在这些“高深术语”中的活泼泼的地气,以及翩跹于青萍之末的云水禅心. ·内聚 内聚,通俗的来讲,就是自己的东西自己保管,自己的事情自己做. 经典理论告诉我们,程序的两大要素:一个是数据(data),

面向接口编程

系列——MEF实现设计上的“松耦合”(终结篇:面向接口编程) 序:忙碌多事的八月带着些许的倦意早已步入尾声,金秋九月承载着抗战胜利70周年的喜庆扑面而来.没来得及任何准备,似乎也不需要任何准备,因为生活不需要太多将来时.每天忙着上班.加班.白加班,忘了去愤,忘了去算计所谓的价值.天津爆炸事故时刻警示着我们生命的无常,逝者安息,活着的人生活还得继续,珍惜生命,远离伤害.武汉,这座炙热的城市,虽值金秋,却依然经受着“秋老虎”的烘烤,马路上蒸腾的热气迎面袭来,全身毛孔张开,汗流不止,在这般高温下,似乎

从头认识设计模式-策略模式-05-引入设计原则:面向接口编程

这一章节我们来讨论一下怎么解决上一章节扩展性差的问题. 1.解决方案 面向接口编程 2.思路 使用java的多态性,动态的设置导入导出的行为 3.代码清单 在Base里面使用导入导出的接口,然后增加一个通用的导出导入方法,下面的实现中,我们只需要设置不同的导入导出行为,即可通过导入导出方法来实现不同的导入导出结果. package com.raylee.designpattern.strategy.ch05; /** * 1.0 这个类是我们需要使用设计模式改进的原始类,也就是策略模式应用的初始

跟王老师学接口(四):面向接口编程:命令模式

面向接口编程:命令模式 主讲教师:王少华   QQ群号:483773664 学习目标 理解面向接口编程的优势 掌握命令模式 一.命令模式 (一)场景 假设你的Boss给你这样一个任务要你处理一个数组.但是没有告诉你,如何处理这个数组,是对其进行输出,还是对其排序.遇到这样的Boss很烦!!! (二) 分析 对于这样的需求,我们第一个想到的就是把数组作为方法的形参,但是我们是否可以把"对数组的处理行为"也作为一个方法的形参传入呢? 因为Java不允许代码块的单独存在,所以我们不可能将&q

面向“接口”编程和面向“实现”编程

来自http://www.vaikan.com/program-to-an-interface-fool/ 面向'接口'编程,而不是面向'实现'. 这是什么意思? 首先我们需要理解什么是'接口',什么是'实现'.简言之,一个接口就是我们要调用的一系列方法的集合,有对象将会响应这些方法调用. 一个实现就是为接口存放代码和逻辑的地方. 本质上讲,这个原则倡导的是,当我们写一个函数或一个方法时,我们应该引用相应的接口,而不是具体的实现类. 面向'实现'编程 首先我们看看,如果不遵循这个原则会发生什么.