浅谈接口与设计模式

接口众所周知就是特定类的共同特征,指明了一个类必须做什么和不能做什么。因为java是单继承,所以多实现的接口弥补了这一局限性,接口很大程度上也实现了解耦。

解耦:如果一个方法操作的是类,那么你只能使用这个类及其子类,如果想要将这个方法应用于不在继承结构中的某个类,那么就无法实现这一操作,接口可以在很大程度上放宽这种限制,使我们可以编写可复用性更好的代码。

先看一个例子

输出结果:

有一个Process类,他有一个name 方法,还有一个process方法,这个方法接受一个参数,修改它的值,然后输出,这个类作为基类被扩展,用来创建不同类型的Processor。Apply.process()方法接受任何类型的Processor,像这样,创建一个能够根据传递参数的不同而具有不同行为的方法称为策略设计模式,这类方法包含所有执行的算法中固定不变的部分,策略就是传递进去的参数对象。Processor对象就是一个策略。

下面创建一个Waveform类

filter和processor具有相同的接口元素,但是他并不是继承自processor类,因此不能将filter用于Apply.process()方法。但是如果Processor是一个接口,就可以复用结构该接口的Apply.process();下面是改造后的:

但是,经常碰到的情况是无法修改想要使用的类。在这种情况下可以使用适配器设计模式。适配器中的代码将接受所有的接口,并产生我们需要的接口。

在这种适配器的方式中,FilterAdapter的构造器接受所有的接口Filter,然后生成你所需要的接口对象。

关于适配器和策略模式都是在看接口章节的时候简单的了解了一下,后面再看设计模式的时候再具体研究。 

原文地址:https://www.cnblogs.com/xiayq/p/10468308.html