首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 到底应该用接口类型 还是实现类型去引用对象?

如题,Java 到底应该用接口类型 还是实现类型去引用对象?首先贴出答案: 应该优先使用接口而不是来引用对象,但只有存在适当接口类型 。...,若我们仍然使用接口来引用对象PetInterface p = new Cat(),那些仅仅存在实现方法,无法直接调用即p.batheSelf()无法调用会报错。...所以这时使用Cat p = new Cat()即来引用是更好。 也就是说,使用接口去引用对象是有前提条件——即实现全是接口方法实现,没有自己单独方法。...实现存在自己方法使用实现来声明变量。...当然也存在向下转型, //p.batheSelf();替换为下面形式 ((Cat)p).batheSelf();//向下转型,可正常调用执行 参考文章: Java 到底应该用接口类型 还是实现类型去引用对象

1.6K30

软考高级架构师:基于服务架构(SOA)概念和例题

当用户下单,订单处理服务会调用支付处理服务进行支付,然后调用物流管理服务安排发货。这种方式使得每个服务都可以独立更新和维护,而不会影响整个系统其他部分。...二、AI 出题 (1)题目 SOA 架构,服务提供者和服务消费者之间交互通过什么进行定义? A. 服务目录 B. 服务契约 C. 服务接口 D....服务行为描述 SOA 架构,哪个原则强调服务应当易于组合和重用? A. 独立性 B. 重用性 C. 高耦合 D. 可伸缩性 在 SOA 架构下,服务与服务之间如何耦合? A....服务提供者和服务消费者之间交互通过服务契约进行定义,它规定了服务接口、行为和通信协议。 答案:C。...在 SOA 架构,服务与服务之间通常是松散耦合,这意味着它们可以独立地开发和部署,只通过定义良好接口进行交互,从而提高系统灵活性和可维护性。 答案:C。

3900
您找到你想要的搜索结果了吗?
是的
没有找到

流行20年架构设计原则SOLID可能已经不适合微服务了

在微服务实现接口隔离 微服务接口隔离目标,确保每种类型前端都能对接最匹配其需求服务契约。...松散耦合 在软件工程耦合指两个软件元素之间相互依赖程度。对基于服务系统而言,传入耦合主要涉及服务用户如何与服务进行交互。我们知道这种交互应该通过服务契约进行。...因此,一般应尽量避免变更契约。如果服务契约与服务逻辑或者技术紧密耦合,那么逻辑或技术需要演进,就很容易影响业务正常运行。 服务通常需要与其他服务或其他类型组件进行交互,由此产生传出耦合。...服务间松散耦合策略 IDEALS 原则“L”提醒我们要注意服务间耦合关系,特别是微服务间耦合情况。我们可以使用组合多种策略以管理传入与传出松散耦合。...对于微服务间通信,我们可以使用异步消息满足需求,则使用领域事件;请求 - 响应连接器更适合时,则使用某种防腐层调用 API;微服务需要来自其他 BC 大量数据使用具有最终一致性数据复制机制

37330

SOA概览3-SOA基本特征

举个例说明最为清楚:向计费系统添加一个客户典型粗粒度服务,而你可以使用几个细粒度服务实现同一功能,如:将客户名加入计费系统,添加详细客户联系方式、添加计费信息等等。...5.松散耦合 SOA具有“松散耦合”组件服务,这一点区别于大多数其他组件架构。该方法旨在将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。...服务提供者和服务使用者间松散耦合背后关键点服务接口作为与服务实现分离实体而存在。这是服务实现能够在完全不影响服务使用情况下进行修改。 大多数松散耦合方法都依靠基于服务接口消息。...消息Web服务通常是松散耦合和文档驱动,这要优于与服务特定接口连接。客户调用消息Web服务,客户通常会发送一个完整文档(如采购订单),而非一组离散参数。...由于客户和Web服务间不存在紧密耦合请求响应,消息Web服务在客户和服务器间提供了更为松散耦合

1.1K20

依赖注入

传统应用程序都是由我们在内部主动创建依赖对象,从而导致之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间松散耦合,这样也方便测试...如上AgentFinder被直接注入getGoodAgents方法,只专注于纯业务逻辑。存在问题,如何配置AgentFinder具体实现?...: 松耦合 可测性 更强内聚性 可重用组件 更轻盈代码 三、Java中标准化DI DI新标准,javax.inject包只是提供一个接口和几个注解类型,这些都会被遵循JSR-330标准各种DI框架实现...向构造器注入通常是必需依赖项,而对于非必需依赖项,通常是在set方法上注入。比如已经给出了默认属性就是非必需依赖项。 属性上使用@Inject 简单直接,但最好不要用。...链接绑定 代码4-1AgentFinderModule即为链接绑定最简单绑定方式,只是告诉注入器运行时应该注入实现或扩展(可以直接注入子类)。

1.6K20

什么SOA

什么SOA 面向服务体系结构(SOA)一个组件模型,它将应用程序不同功能单元(称为服务)通过这些服务之间定义良好接口契约(规范)联系起来。...SOA定义 面向服务架构,它可以根据需求通过网络对松散耦合粗粒度应用组件进行分布式部署、组合和使用。服务层SOA基础,可以直接被应用调用,从而有效控制系统与软件代理交互的人为依赖性。...SOA优势 对 SOA 需要来源于需要使业务,让服务变得更加灵活,以适应业务改变。更好实现业务驱动。 SOA具有低耦合性特点,业务伙伴对整个业务系统影响较低。...SOA特性 暴露API,可从企业外部访问 随时可用 松散耦合 可重用服务(与重组服务) 标准化服务接口 精确定义服务契约 ......5.服务调用是否必须经过企业服务总线(ESB、dubbo_zk),何种情况下必须经过ESB,何种情况下不需要? 6.某个现有服务功能部门满足某项需求如何对服务进行改造和版本控制?

1.3K60

一文getSOLID原则重点

1 单一职责原则(SRP) 定义:一个应该只有一个发生变化原因 为何把这两个职责分离分离单独很重要呢?因为每一个职责都是变化一个轴线。需求变化时,该变化会反映为职责变化。...这种耦合会导致脆弱设计,变化发生,设计会遭受到意向不到破坏。 在SRP,我们把职责定义为变化原因,如果你能够想到多于一个动机去改变一个,这个就具有多于一个职责。...换言之,如果一个客户程序依赖于一个含有它不使用方法,但是其他客户却确实要用这个方法,那么其实客户要求这个改变,就会影响这个客户程序。分离客户就是分离接口。...接着,该胖就可以继承所有特定于客户程序接口实现它们,这就解除了客户程序和没有调用方法间依赖关系,使客户程序之间互不依赖。...客户拥有接口所有权,而它们服务者则从这些接口派生。 由客户模块或者层来声明它们所需要服务接口,那么仅客户需要才会对接口改变。这样改变实现抽象接口就不会影响客户。

29220

在程序设计中使用Interface

在PHP和Java中都有Interface概念,刚接触开发大家都知道在面向对象Interface负责定义一些抽象方法来抽象和界定对象行为,更有一个“鸭式辩型”理论大概意思就是使用者并不关心对象内部怎么实现只要你会...首先在Interface在Laravel框架中被称为契约, 例如我们在介绍用户认证章节用户看守器契约Illumninate\Contracts\Auth\Guard 和用户提供器契约Illuminate...)他们不需要关心接口提供方法具体怎么实现, 只关心接口方法能提供什么功能然后去使用这些功能就可以了,我们可以根据需求在必要时候为接口更换实现,而消费端不用进行任何改动。...简单讲:这个控制器知道太多了。 控制器不需要去了解数据从哪儿来,只要知道如何访问就行。控制器也不需要知道这数据从MySQL或哪儿来,只需要知道这数据目前可用。...function userOrders(User $user) { Order::where('user_id', '=', $user->id)->get(); } } 将接口实现绑定

1.1K10

浅析 Laravel 底层原理:契约(Contracts)「建议收藏」

大家好,又见面了,我全栈君。 简介 Laravel 契约是指框架提供一系列定义核心服务接口(interface)。...不管契约还是 Facades 都可以创建出健壮、易测试 Laravel 应用程序。如果你长期关注单一职责,你会注意使用契约还是 Facades 其实没多少实际意义上区别。...然而,你可能还是会有几个关于契约问题。例如,为什么要使用接口?不使用接口会比较复杂吗?下面让我们谈下使用接口原因:低耦合和简单性。 低耦合 首先,让我们来看一些高耦合缓存实现代码。如下: <?...简单性 所有 Laravel 服务都使用简洁接口定义,就很容易判断给定服务提供功能。可以将契约视为说明框架功能简洁文档。 除此之外,依赖接口足够简洁,代码可读性和可维护性会大大提高。...如何使用契约 Laravel 许多类型都是通过 服务容器 解析出来,包括控制器、事件监听器、中间件、任务队列,甚至路由闭包。

96310

浅析 Laravel 底层原理:契约(Contracts)

不管契约还是 Facades 都可以创建出健壮、易测试 Laravel 应用程序。如果你长期关注单一职责,你会注意使用契约还是 Facades 其实没多少实际意义上区别。...然而,你可能还是会有几个关于契约问题。例如,为什么要使用接口?不使用接口会比较复杂吗?下面让我们谈下使用接口原因:低耦合和简单性。 低耦合 首先,让我们来看一些高耦合缓存实现代码。如下: <?...而 repository 不应该了解太多关于谁提供了这些数据或是如何提供等等。 比起上面的做法,我们可以使用一个简单、与扩展包无关接口来改进我们代码: <?...简单性 所有 Laravel 服务都使用简洁接口定义,就很容易判断给定服务提供功能。可以将契约视为说明框架功能简洁文档。 除此之外,依赖接口足够简洁,代码可读性和可维护性会大大提高。...如何使用契约 Laravel 许多类型都是通过 服务容器 解析出来,包括控制器、事件监听器、中间件、任务队列,甚至路由闭包。

1.1K20

WCF系列教程之WCF服务协定

(1)、服务契约实现要靠ServiceContractAttribute 属性定义 (2)、服务契约方法实现要靠 OperationContractAttribute 属性定义 2、如果一个协定(接口...(2)、客户端可以通过它来于服务端进行通信 3、定义完了服务协定层(服务接口层),就可以实现当前协定层,实现服务协定层后并将其与WCF 绑定和 EndpointAddress 对象一起使用时,此服务协定将公开以供客户端使用...二、服务协定ServiceContract属性: 1、服务契约加上ServiceContract特性修饰,可以看到它有两个构造函数,一个无参,一个有参。...默认值服务实现名称。 (4)、ProtectionLevel:使用 ProtectionLevel 属性指定协定绑定对公开协定终结点要求加密和/或数字签名程度。...如果绑定不支持会话,则会引发异常。具体请参考:WCF系列教程之WCF会话. (6)、CallbackContract:获取或设置协定为双工协定时回调协定类型。

83770

SOA 说明,解析

面向服务架构(SOA)一个组件模型,它将应用程序不同功能单元(称为服务)通过这些服务之间定义良好接口契约联系起来。...接口采用中立方式进行定义,它应该独立于实现服务硬件平台、操作系统和编程语言。这使得构建在各种各样系统服务可以以一种统一和通用方式进行交互。...SOA过程特征: 可从企业外部访问 随时可用 粗粒度服务接口分级 松散耦合 可重用服务 服务接口设计管理 标准化服务接口 支持各种消息模式...SOAPWeb服务默认机制,其他技术为可以服务实现其他类型绑定。一个消费者可以在UDDI注册表(registry)查找服务,取得服务WSDL描述,然后通过SOAP来调用服务。...要将企业业务伙伴整合到企业“大”业务系统,对其业务伙伴具体采用什么技术没有限制。 3, SOA具有低耦合性特点,业务伙伴对整个业务系统影响较低。

79530

WCF之旅(1):创建一个简单WCF程序

图2 计算服务在VS结构 步骤二:创建服务契约 WCF采用基于契约交互方式实现了服务自治,以及客户端和服务端之间耦合。...松耦合SOA一个基本特征,WCF应用客户端和服务端耦合体现在客户端只须要了解WCF服务基本描述,而无须知道具体实现细节,就可以实现正常服务调用。...图6 添加服务引用 在一系列自动生成,包含一个服务契约接口、一个服务代理对象和其他相关。...被客户端直接用于服务调用一个继承自ClientBase实现了CalculatorService接口(CalculatorService为客户端生成服务契约接口类型...,现在我们来演示如何将WCF服务寄宿IIS

64321

WCF之旅(1):创建一个简单WCF程序

图2 计算服务在VS结构 步骤二:创建服务契约 WCF采用基于契约交互方式实现了服务自治,以及客户端和服务端之间耦合。...松耦合SOA一个基本特征,WCF应用客户端和服务端耦合体现在客户端只须要了解WCF服务基本描述,而无须知道具体实现细节,就可以实现正常服务调用。...图6 添加服务引用 在一系列自动生成,包含一个服务契约接口、一个服务代理对象和其他相关。...被客户端直接用于服务调用一个继承自ClientBase实现了CalculatorService接口(CalculatorService为客户端生成服务契约接口类型...,现在我们来演示如何将WCF服务寄宿IIS

86090

JAVA常用框架及漏洞

能够让相互协作软件组件保持松散耦合。降低了业务对象替换复杂性,提高了组件之间解耦。 2....;提供了非常灵活数据验证、格式化和数据绑定机制;提供了强大约定大于配置(惯例优先原则)契约式编程支持。...Vaadin server 安全漏洞 GWT介绍: GWT提供了一组基于Java语言开发包,这个开发包设计参考Java AWT包设计,命名规则、接口设计、事件监听等都和AWT非常类似。...熟悉Java AWT开发者不需要花费多大力气就能够快速理解GWT开发工具包,将更多地时间投入GWT应用开发过程。 漏洞: 1....Grails数据绑定安全绕过漏洞 Play介绍: Play一款开源、轻量、无状态、Web友好架构,使用Java语言编写遵循MVC模式,集成了当今Web开发所需组件和API。

3.2K20

如何选择ESB

SOA描述了一种IT基础设施应用集成模型;其中软构件集是以一种定义清晰层次化结构相互耦合。一个ESB一个预先组装 SOA实现,它包含了实现SOA分层目标所必需基础功能部件。...什么SOA 面向服务体系结构(Service-Oriented Architecture,SOA)一个组件模型,它将应用程序不同功能单元(称为服务)通过这些服务之间定义良好接口契约联系起来。...接口采用 中立方式进行定义,它应该独立于实现服务硬件平台、操作系统和编程语言。这使得构建在各种这样系统服务可以一种统一和通用方式进行交互。...企业服务总线(Enterprise ServiceBus,ESB)构建基于SOA解决方案使用基础架构关键部分,由中间件技术实现支持SOA一组基础架构功能。...该接口隐藏了服务实现细节,允许通过独立于服务实现、独 立于硬件或软件平台、独立于编写服务所使用编程语言方式使用该服务。

3.5K110

Knockout.Js官网学习(简介)

然后刚刚发现在建立asp.net mvc4.0应用程序时候,建完之后我直接在项目的Scripts中看到了 ? 这两个js库,用谷歌翻译看了下官网,Ko实现原理MVVM,比MVC高级一些。...ViewModel包含所有由UI特定接口和属性,并由一个 ViewModel 视图绑定属性,并可获得二者之间松散耦合,所以需要在ViewModel 直接更新视图中编写相应代码。...WPF与IView层沟通,最佳手段使用Binding,当然,也可以使用事件;Presenter层要实现IView,多态机制可以保证运行时UI层显示恰当数据。...有一句话说好:物体受到接力时候,凡是有界面的地方就是最容易被撕下来地方。因此,IView作为公共视图接口约束(契约一层意思;View则能传达解耦一层意思。...视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定不同"View"上,View变化时候Model可以不变,Model变化时候View也可以不变。 2.

2.3K20

如何选择ESB

SOA描述了一种IT基础设施应用集成模型;其中软构件集是以一种定义清晰层次化结构相互耦合。一个ESB一个预先组装SOA实现,它包含了实现SOA分层目标所必需基础功能部件。...什么SOA 面向服务体系结构(Service-Oriented Architecture,SOA)一个组件模型,它将应用程序不同功能单元(称为服务)通过这些服务之间定义良好接口契约联系起来。...接口采用中立方式进行定义,它应该独立于实现服务硬件平台、操作系统和编程语言。这使得构建在各种这样系统服务可以一种统一和通用方式进行交互。...企业服务总线(Enterprise ServiceBus,ESB)构建基于SOA解决方案使用基础架构关键部分,由中间件技术实现支持SOA一组基础架构功能。...该接口隐藏了服务实现细节,允许通过独立于服务实现、独 立于硬件或软件平台、独立于编写服务所使用编程语言方式使用该服务。

3.5K60

SOA软件架构设计—面向服务架构(SOA详细解释)「建议收藏」

(3)Gartner 定义:SOA 一种 C/S 架构软件设计方法,应用由服务和服务使用者组成,SOA 与大多数通用 C/S 架构模型不同之处,在于它着重强调构件松散耦合使用独立标准接口...这允许支持基于服务系统成为松散耦合、面向构件和跨技术实现,服务请求者很可能根本不知道服务在哪里运行、由哪种语言编写,以及消息传输路径,而是只需要提出服务请求,然后就会得到答案。...服务实现定义描述了给定服务提供者如何实现特定服务接口。服务实现定义包含服务和端口描述。...服务提供者服务所有者,该角色负责定义实现服务,使用 WSDL 对服务进行详细、准确、规范地描述,并将该描述发布服务注册中心,供服务请求者查找绑定使用。 (2)服务请求者。...(6)可组合性 在微服务架构,系统会开放很多接口供外部使用情况发生改变,可以使用不同方式构建应用,而整体化应用程序只能提供一个非常粗粒度接口供外部使用

10.8K31

【架构设计模式】MITRE 设计模式

其他示例代理结构模式,其中一个对象成为另一个对象代理(具有相同接口),通常用于远程过程调用;单例模式,其中一个只允许创建自己一个实例,通常用于管理共享资源;和中介者行为模式,它允许之间松散耦合...在企业环境考虑系统系统接口,可以扩展设计模式概念,以包含有关如何管理接口耦合更一般指导。作为一般规则,只要可能,松耦合优于紧耦合。...松散耦合意味着接口一侧实现变化不会影响另一侧实现。例如,在具有必须分发给用户查找表字段中使用代码不是松散耦合。此外,松散耦合接口不应锁定会抑制可扩展性特定限制。...复杂性会导致错误,从而导致可能无法纠正不良性能,甚至可能成为安全风险。 尽可能使用松散耦合接口松散耦合意味着接口一侧实现变化不会影响另一侧实现。...只有在性能需要使用紧密耦合接口。紧密耦合会导致代码有缺陷和脆弱。紧密耦合一个例子 Link-16 接口,因为它是一个战术链接,所以使用一个数字来表示飞机类型。

30010
领券