一、概念
1.什么是面向接口编程
面向接口编程就是先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。
当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件(例如Spring框架)中该接口
的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。
复制代码
2.面向接口编程的优点
1 降低程序的耦合性。其能够最大限度的解耦,所谓解耦既是解耦合的意思,它和耦合相对。耦合就是联系
,耦合越强,联系越紧密。在程序中紧密的联系并不是一件好的事情,因为两种事物之间联系越紧密,你更换
其中之一的难度就越大,扩展功能和debug的难度也就越大。
2 易于程序的扩展;
3 有利于程序的维护;
复制代码
3.接口编程在设计模式中的体现:开闭原则
其遵循的思想是:对扩展开放,对修改关闭。其恰恰就是遵循的是使用接口来实现。在使用面向接口的编程过程
中,将具体逻辑与实现分开,减少了各个类之间的相互依赖,当各个类变化时,不需要对已经编写的系统进行
改动,添加新的实现类就可以了,不在担心新改动的类对系统的其他模块造成影响。
复制代码
二、设计模式
1、面向过程编程
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向过程是一种以过程为中心的编程思想。面向过程是一种最为实际的思考方式,就算是面向对象的方法也有面向过程的思想。可以说面向过程是一种基础的方法。它考虑的是实际的实现。一般面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。
2、面向对象编程
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
对象:对象是要研究的任何事物。比如人类就是一个对象,然而对象是有属性和方法的,那么身高、体重、年龄、性别等等,这些是每个人都有的特征可以概括为属性。 类:类是对象的模板。即类是对一组有相同属性和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。
2.2.1 面向对象的基本特征 封装、继承、多态、抽象
封装:就是把属性私有化,提供公共方法访问四有对象。
继承:当多个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其他类继承于这个父类。继承后的子类自动拥有了父类的属性和方法,比如猫、狗、猪他们共同的特征都是动物、都会跑会叫等特征。
但是需要注意的是,父类的私有属性(private)和构造方法不能被继承。另外子类可以写自己特有的属性和方法,目的是实现功能的扩展,子类也可以重写父类的方法。
多态:简单来说就是“一种定义,多种实现”。同一类事物表现出多种形态。JAVA语言中有方法重载和对象多态两种形式的多态。
方法重载:在一个类中,允许多个方法使用同一个名字,但是方法的参数不同,完成的功能也不同
对象多态:子类对象可以与父类对象进行相互转换,而且根据其使用的子类的不同,完成的功能也不同
复制代码
3、面向接口编程
什么叫面向接口编程
在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。
2.3.1 关于接口的理解。
接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。
接口的本身反映了系统设计人员对系统的抽象理解。
接口应有两类:
第一类是对一个体的抽象,它可对应为一个抽象体(abstract class);
第二类是对一个体某一方面的抽象,即形成一个抽象面(interface);
复制代码
一个体有可能有多个抽象面。 抽象体与抽象面是有区别的。
面向对象是指,我们考虑问题时,以对象为单位,考虑它的属性及方法
面向过程是指,我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现
接口设计与非接口设计是针对复用技术而言的,与面向对象(过程)不是一个问题
复制代码