设计模式--装饰器和适配器

装饰器模式

        顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。通常需要被一些类的功能做扩展的时候用到。装饰内持有被装饰类的实例,并且实现同一个接口。

装饰类通过构造器声明装饰对象。

他与代理模式的区别就是装饰器模式是is-a关系,而代理模式不一定是。例子这里就不举了

适配器模式

        适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,类似于插头转换器,港版的手机充电需要通过转换接头将220v的电压转换成能用的电压。

        适配器分为三种:类适配器、对象适配器、接口适配器

类适配器模式:

  原理:通过继承来实现适配器功能。

public interface electricSourceB{

        create220V();
}

public interface electricSource{

        create36v();
}

public class VPower implements electricSource{

    @Override
    public void create36v() {
        System.out.println("生产36V电压");
    }

}

 public class Adapter extends VPower implements electricSourceB{

        create220V(){
            create36v();
        }
}


public class Clienter {

    public static void main(String[] args) {
        electricSourceB b= new Adapter();
        p.create220V();
    }

}

通过适配器使输入的电压变成36v

对象适配器模式:

        原理:通过持有适配类的对象,实现被适配

同样用上面的例子,只是适配器实现做一点修改

public class Adapter implements electricSourceB{

        private electricSource electricSource;

        public Adapter(electricSource  e){
            this.electricSource=e;
        }
        create220V(){
            electricSource.create36v();
        }
}

public class Clienter {

    public static void main(String[] args) {
        electricSourceB p = new Adapter(new VPower());
        p.isPs2();
    }

}

接口适配器模式:

        原理:通过抽象类来实现适配,通过抽象类(适配器)实现被适配接口,再用实现类实现抽象类,可以选择性的实现被适配对象。

 

适配器模式应用场景

类适配器与对象适配器的使用场景一致,仅仅是实现手段稍有区别,二者主要用于如下场景:

  (1)想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直接去访问,这时创建一个适配器就能间接去访问这个类中的方法。

  (2)我们有一个类,想将其设计为可重用的类(可被多处访问),我们可以创建适配器来将这个类来适配其他没有提供合适接口的类。

  以上两个场景其实就是从两个角度来描述一类问题,那就是要访问的方法不在合适的接口里,一个从接口出发(被访问),一个从访问出发(主动访问)。

接口适配器使用场景:

  (1)想要使用接口中的某个或某些方法,但是接口中有太多方法,我们要使用时必须实现接口并实现其中的所有方法,可以使用抽象类来实现接口,并不对方法进行实现(仅置空),然后我们再继承这个抽象类来通过重写想用的方法的方式来实现。这个抽象类就是适配器。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值