Java设计模式之缺省模式

来源:互联网 发布:mac os x 10.12 cdr 编辑:程序博客网 时间:2024/05/27 20:52

1、概念

缺省适配模式为一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。开发中BaseAdapter实现ListAdapter就是使用这种设计模式。

2、运用

一个接口有很多抽象方法,当要写接口的实现类,就必须要实现接口中很多无关的抽象方法,这时就可以使用缺省适配模式,设计一个抽象的适配器类实现接口,并为所有方法提供空实现。用户类只需要继承适配器类,实现必要的方法就可以了。

模式所涉及的角色有:

InterfaceA:目标接口。可能定义有很多方法,但这些方法不一定全都被用户类所需要。

AbstractClassB:缺少适配模式的核心。它实现InterfaceA接口,为所有方法提供空的实现。

ClassBImpl:用户类,它需要实现InterfaceA接口。但因为InterfaceA方法众多,而ClassBImpl中对其中一两个方法(比如这里的Fun1())感兴趣。如果直接实现InterfaceA,就需要提供众多的空方法。所以它继承AbstractClassB,只需要重写它感兴趣的方法即可。既实现了InterfaceA接口,又省去了定义空方法的麻烦。

public interface InterfaceA{

void fun1();

void fun2();

void fun3();

void fun4();

void fun5();

}

以上代码定义了目标接口,接下来创建一个抽象的适配器类实现接口。

class AbstractB implements InterfaceA{

@Override

public void fun1() {}

 

@Override

public void fun2() {}

 

@Override

public void fun3() {}

 

@Override

public void fun4() {}

 

@Override

public void fun5() {}

}

观察以上代码可知,抽象的适配器类实现了目标接口,并给所有的方法提供空实现。

此时我们只需创建抽象类的子类,实现自己感兴趣的方法即可。

class ClassBImpl extends AbstractB{

@Override

public void fun1() {

super.fun1();

}

}

0 0
原创粉丝点击