面向接口编程

面向接口编程与注入理解

狂风中的少年 提交于 2020-03-08 04:21:29
在JAVA中类与对象是常见的两个名词。通常,人们喜欢把类比喻为蓝图,而对象比喻为用蓝图生成的产品。这样的比喻是有一定的缺陷的,因为当两个类有协作关系时,通常的做法是在其中一个类中生成另一个类的对象,然后再调用这个对象的方法完成相应的组合功能。如果套用蓝图与产品,我们就会发现,一种产品居然在另一产品的图纸中产生。这样的视觉效果让人产生迷惑。此时设计模式或者框架来解决了这个问题。在工厂模式中,类的对象的生成不再是随处,而是固定在一个工厂类中。通过工厂类,可以很方便生成想要的对象,同时又不会混淆图纸与产品的关系,虽然产品是在工厂图纸,也就是工厂类中生成,但也比通常的做法要好很多。spring框架也是利用了工厂模式的原理来达到减少复杂度的目的,通过把spring的配置,所有的类,也就是产品类都会被注册到bean 工厂中,当需要使用的时候只需要从工厂容器中取出相应名称的对象即可。当开始使用工厂,也就是不在图纸上面建造依赖类,那么依赖关系如何继续呢?通过接口继续这种依赖关系。一个类依赖了一个接口,意味这个类可以在自己的方法中使用所有接口中定义的方法,同时也意味着这个类可以接纳所有实现了这个接口的类的进入,或者说是注入。而实现了接口,意味着它可以被当成这个接口看待,可以注入到依赖这个接口的类中。这就是面向接口编程与DI的实际意义。 来源: CSDN 作者: 奈树 链接: https://blog

接口与抽象类那点事

喜夏-厌秋 提交于 2020-02-08 20:36:20
也谈接口和抽象类区别 好象这是一个老生常谈的问题,最近有个学生问我他们的区别,于是我就又想起这个话题。 有不少的文章在描述这两者,但好象都没有怎么从初学者的浅显角度来看。 其实这两者有很多相识之处,当然也有很多不同之处。要理解它们,应该先从面向对象思想开始。面向对象思想里面,最基本的就是封装,继承和多态。所谓封装,说的小,方法(函数)也就是对一种操作的封装,说的大,用类来描述一个具体的对象。 那么在面向对象程序中应该说对封装还有一层新的定义,即将类的描述抽象化,也就是说描述类的外貌而不去考虑它的实际。 那么我们回过头来看抽象类,它必须被继承使用,描述的其实是一种继承关系,即"is a"的关系。类继承它,也就是说类拥有它所有抽象方法等,那么也就是类遵循了它所定义的规范。但是呢,这种规范是通过继承而来,类的发展必须依赖它的父类。 abstract class 工作 { abstract void 上班() } class 张三 : 工作 { } abstract class 工作 { abstract void 上班() } class 人: 工作 { } class 李四 : 人 { } 我们从这个例子中不难看出,张三和李四同样都遵循抽象工作的规范,都拥有上班这个方法,但是呢,他们的发展始终受到父类的影响。 当然,我这里只是从它们使用的角度来看,我们还能从他们设计角度度来看

面向切面编程二

徘徊边缘 提交于 2020-01-18 03:22:43
上一篇是对一个具体的类切面编程实现,现在将其抽象出来,利用java的动态代理特性实现切面编程。类图如下 定义了Before和After泛型接口,DynamicProxy类实现切面编程功能,继承自InvocationHandler接口。 Before接口 public interface Before<T> { public boolean before(T...args); } BeforeDivide实现Before接口 public class BeforeDivide implements Before{ //除法参数的验证 @Override public boolean before(Object... args) { if((Integer)args[1]==0) return false; else return true; } } After接口 public interface After<T> { public void after(T...args); } AfterDivide实现After接口 public class AfterDivide implements After{ //输出结果 @Override public void after(Object... args) { System.out.println("结果是:"+args[0]); }

C#面向接口编程详解(1)——思想基础

女生的网名这么多〃 提交于 2020-01-13 09:12:33
 我想,对于各位使用面向对象编程语言的程序员来说,“ 接口 ”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。   1.面向接口编程和面向对象编程是什么关系   首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。   2.接口的本质   接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:    以下是引用片段: interface InterfaceName   {   void Method1();   void Method2(int para1);   void Method3(string para2,string para3);   }      那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑:   1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能…

面向接口编程之三——模式研究

天大地大妈咪最大 提交于 2020-01-01 20:15:35
原文链接: http://kb.cnblogs.com/page/145705/ 通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象。但是,第二篇中的例子旨在展示面向接口编程的实现方法,比较简单,不能体现出面向接口编程的优势和这种思想的内涵。那么,这一篇作为本系列的终结篇,将通过分析几个比较有深度的模式或架构,解析隐藏其背后的面向接口思想。这篇我将要分析的分别是MVC模式和.NET平台的分层架构。   这篇的内容可能会比较抽象,望谅解。    1. 从MVC开始   MVC简介:   本文不打算详细解释MVC架构,而是把重点放在其中的面向接口思想上。所以在这里,只对MVC做一个简略的介绍。   MVC是一种用于表示层设计的复合设计模式。M、V、C分别表示模型(Model)、View(视图)、Controller(控制器)。它们的职责如下:   模型:用于存储应用中的数据及运行逻辑,是应用的实体。   视图:负责可视部分,用于与用户交互及呈现数据。视图只负责显示,不负责将用户的操作行为解释给模型。   控制器:负责将用户的行为解释给模型。根据指定的策略和用户的操作,调用模型的逻辑。   关于三者的关系,我画了一张图,大家请看:    MVC模式示意   它们之间的交互有以下几种:   1. 当用户在视图上做任何需要调用模型的操作时

面向接口编程详解——思想基础

给你一囗甜甜゛ 提交于 2020-01-01 20:15:03
我想,对于各位使用面向对象编程语言的 程序员 来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。 2.接口的本质 接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子: interface InterfaceName { void Method1(); void Method2( int para1); void Method3( string para2, string para3); } 那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑: 1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。 例如,在自然界中,人都能吃饭,即“如果你是人

面向接口编程详解(一)——思想基础

匆匆过客 提交于 2020-01-01 20:14:51
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。 2.接口的本质 接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子: interface InterfaceName { void Method1(); void Method2(int para1); void Method3(string para2,string para3); } 那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑: 1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。 例如,在自然界中,人都能吃饭,即“如果你是人,则必须能吃饭”

面向接口编程详解

倾然丶 夕夏残阳落幕 提交于 2020-01-01 20:14:11
一:思想基础 我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。 2.接口的本质 接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子 interface InterfaceName { void Method1(); void Method2( int para1); void Method3( string para2, string para3); } 那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑: 1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。 例如,在自然界中,人都能吃饭,即“如果你是人

golang与面向接口编程

前提是你 提交于 2020-01-01 00:41:11
这节不阐述OOP的理念,从接口直接讲,需要一定的抽象思想,新手可以绕道 go里面的接口定义 Go语言不同于其他语言。在Go语言中,接口是自定义类型,用于指定一组一个或多个方法签名,并且该接口是抽象的,因此不允许你创建该接口的实例。但是你可以创建接口类型的变量,并且可以为该变量分配一个具体的类型值,该值具有接口所需的方法。换句话说,接口既是方法的集合,也是自定义类型。 // 定义一个接口 type myinterface interface { // 定义方法名 fun1 ( ) int fun2 ( ) float64 } 我自己对接口的定义为接口是方法签名的集合。 struct里面可以定义方法,也可以定义成员变量,像我一直在做测试驱动开发的事情,在我眼里,一个好的设计就是对象本身定义了必需的内部元素,接口则定义了对外表示的行为规范,按照这样的设计才能真正的做到解耦。 在Go语言中,必须实现在接口中声明的所有方法以实现接口。go语言接口是隐式实现的,官方是叫非侵入式接口。并且它不包含任何其他关键字来实现与其他语言一样的接口。 这点和我以前写c#和java的时候差别很大,以前创建一个接口实体类,必须显式声明。 public class Instance implements InterfaceA , InterfaceB { // ... } 区别在哪里呢? 在我看来,最大的区别在于

面向接口编程详解(一)

天涯浪子 提交于 2019-12-19 17:50:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。 2.接口的本质 接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子: interface InterfaceName { void Method1(); void Method2(int para1); void Method3(string para2,string para3); } 那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑: 1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……