Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 桥和接口之间的区别_Design Patterns - Fatal编程技术网

Design patterns 桥和接口之间的区别

Design patterns 桥和接口之间的区别,design-patterns,Design Patterns,据我所知,引用维基百科的话,桥接模式的目的是“将抽象与其实现解耦”。这不正是接口所做的吗。通过决定一个接口并强制一个类使用该接口,任何其他类都可以与该接口交互,而不需要任何关于内部工作的知识 那么,接口是否等同于网桥呢?“接口”通常指的是类中的公共内容。据我所知,在桥接模式中,接口和实现实际上有单独的类。接口只是指某种东西的“公共API”:这是您编写软件所依据的契约。Java使用关键字interface来定义没有包含此类契约的代码的类 桥接模式是一种设计模式。它代表脱钩。可以说Java接口是实现

据我所知,引用维基百科的话,桥接模式的目的是“将抽象与其实现解耦”。这不正是接口所做的吗。通过决定一个接口并强制一个类使用该接口,任何其他类都可以与该接口交互,而不需要任何关于内部工作的知识

那么,接口是否等同于网桥呢?

“接口”通常指的是类中的公共内容。据我所知,在桥接模式中,接口和实现实际上有单独的类。

接口只是指某种东西的“公共API”:这是您编写软件所依据的契约。Java使用关键字
interface
来定义没有包含此类契约的代码的类

桥接模式是一种设计模式。它代表脱钩。可以说Java接口是实现此模式的一种方法

请注意,网桥通常公开完整的API,而Java接口只能公开部分API。示例:您有一个类
Foo
,它有两个方法:
bar()
baz()

桥接器是任何与
Foo
具有相同公共API的东西,并且可以在任何可以使用
Foo
的地方使用


对于接口,您可以有两个。一个包含
bar()
,另一个包含
baz()
。实现两者的任何类都是
Foo
的有效实现,但也可以有只实现其中一个的类。

接口是实现必须遵守的契约。桥接器使用接口来实现其目标,即将一些具体的实现与它同意的客户端接口分离,这样客户端就不需要(或者更确切地说,不需要)了解它所使用的服务如何工作的细节。

您是说
接口吗(就像在许多类似Java的语言中出现的语言构造一样)?或者仅仅是“接口”,比如“类型向其客户机公开的内容”


有一个很大的区别,一个是非通用语言特定的细节(对于那些实现
接口的语言,键入类似于桥的语句函数),另一个是所有OO语言通用的(据我所知)。对于类的“接口”,则no your语句不正确。

(任何其他允许定义接口的语言),通常将接口与实现接口的类分开。尽管我同意类中的公共成员是“接口”,我不认为这是OP所问的。好吧。那么我要说的是,接口本身代表一层抽象,而桥接模式实际上有两层抽象,这在相应的wikipedia条目的图表中变得很明显。