缺省适配模式/Default Adapter

缺省适配模式/Default Adapter

意图/适用场景:

缺省适配模式为一个接口提供缺省实现,这样了类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。

当原接口中定义的方法太多,而其中大部分又不被需要时,这种模式非常实用。由缺省适配器类直接实现接口,并为所有方法提供缺省的空实现。用户类就只需要继承适配器类,只实现感兴趣的方法就行了。

Java的WindowAdapter就是一个典型的缺少适配器类。

UML:

缺省适配模式/Default <wbr>Adapter

参与者:

  1. Target:目标接口。可能定义有很多方法,但这些方法不一定全都被用户类所需要。
  2. Adapter:缺少适配模式的核心。它实现Target接口,为所有方法提供空的实现。
  3. User:用户类,它需要实现Target接口。但因为Target方法众多,而User中对其中一两个感兴趣。如果直接实现Target,就需要提供众多的空方法。所以它继承Adapter,只需要重写它感兴趣的方法即可。既实现了Target接口,又省去了定义空方法的麻烦。

相关模式:

同名为“适配器”的模式,但适配器模式的用意是改变Adaptee接口,使它与目标接口Target相容;而缺省适配模式只是为方便实现复杂接口而定义一种平庸实现。

示例代码:

[java]
// Source code from file:  Adapter.java
package designPatterns.DefaultAdapter;

public class Adapter implements Target {

public void operation1() {
}

public void operation2() {
}

public void operation3() {
}

}

// Source code from file:  Target.java

package designPatterns.DefaultAdapter;

public interface Target {
public void operation1();
public void operation2();
public void operation3();
}

// Source code from file:  User.java

package designPatterns.DefaultAdapter;

public class User extends Adapter {
public void operation2() {
System.out.println("User.operation2()");
}

public static void main(String [] args) {
Target target = new User();
target.operation1();
target.operation2();
target.operation3();
}
}
[/java]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值