Java设计模式(5)--适配器模式

本文介绍了适配器模式的应用场景及实现方式,包括类适配器和对象适配器的区别,并探讨了定制适配器与缺省适配器的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

适配器模式主要是用于补救的,为什么这么说呢,拿上一章的观察者模式来说:
1、jdk中的观察者Observer,是一个接口,如果我们有一个类Male,要实现观察者的功能,那么直接实现Observer接口即可,但是,如果需要是,既要有Observer的功能,也要有User(另一个类)的功能,我们要怎么做呢?这里,类适配器就发挥作用了

public class Male extends User implement Observer{
}

只需要继承目标类,实现Observer接口,就实现了我们上述的目的,这种适配器叫做类适配器。

2、jdk中的被观察者Observable是一个类,与上面的需求类似,我们的Male类,需要有Observable被观察者的功能,又要具有User类的功能,那这怎么办?这里最好不要让User去继承Observable类,这将破环原有的继承体系。由于Java继承只允许继承一个类,我们使用类适配器将无法满足我们的需求,那么,就要使用对象适配器了。

class Male extends User{
    private Observable observable;

    //get set方法
}

这就是对象适配器,采用组合的模式,这样,User和Observable两个类的功能我们都可以使用了。当然,这里不是最好的方式,因为实际需求中不仅仅只有一个Male类,可能还有其他类需要有类似的需求,我们重复这样定义实在是太麻烦了,所以,我们定义一个公共的类,作为一个适配器,Male类直接继承这个公共的适配器就能够满足需求了。

class BaseUserObservable extends User{
    private Observable observable;

    //get set方法
}

class Male extends BaseUserObservable {
}

这样就是对象适配器了。

根据目的的不同,还可以分为 定制适配器和缺省适配器。上面所说的,是目的性很强的,需要实现什么什么功能,就是定制适配器,而缺省适配器,作用是在我们实现某些接口时,省去一些不需要的方法,比如:

interface A{

    public void method1();
    public void method2();
    public void method2();

}

有一个接口A,有三个方法,假设,我们有个类C,需要继承A,则必须重写这三个方法,这时候,假设我们值真正使用到的只有method1,那么另外两个方法的代码就显得冗余了,这时候可以使用缺省适配器。

class B implement A{

    public void method1(){}
    public void method2(){}
    public void method2(){}

}

那么,我们的类C,只需要继承B,然后重写我们需要的方法即可

class C extends B {
    public void method1(){
        ...
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值