适配器模式
对这个模式我自己的理解是,如果在你的类结构中,你希望引入一个现有的类,并且给这个类增加新的功能,且这个类又无法修改,这时候就需要用到适配器模式了,所以适配器模式是一种补救措施。例如在之前的观察者模式中,每一个新的观察者的加入都需要实现观察者接口,如果一个现有的无法修改的类,希望成为观察者,就需要用到适配器模式了。
假如我们的系统里已经有一个类叫UnChangeable希望它成为观察者可以通过以下方式:
public class MyAdapter extends UnChangeable implements Observer {
@Override
public void update(Observable o) {
//当被观察者变化时,希望UnChangeable做的事情
super.hashCode();
}
}
即我们继承了希望复用的类,并且实现了希望适配的接口,这个适配器既有原来类的功能有有观察者的身份。
以上是简单的适配器模式的实现,也叫类适配器
以上例子中是适配观察者,假如我们要适配被观察者,因为成为被观察者需要继承被观察者的父类Obserable,如果被观察者已经有了父类,并且此时希望成为观察者,就需要用到适配器模式,因为一个类只能有一个父类,所以利用继承和组合,这种适配器叫对象适配器,一般形式如下,(其中user有自己的继承体系):
public class ObservableUser extends User{
private Observable observable = new Observable();
public synchronized void addObserver(Observer o) {
observable.addObserver(o);
}
//此处省略......
}