设计模式-适配器模式(Adapter)


一、适配器模式是什么?

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。

二、适配器模式

1.案例

  • 背景:买了一个iphone
  • 冲突:iphone要求电压(5V)[尊贵的5V2A]与国内插头标准输出电压(220V)不兼容
  • 解决方案:设置一个适配器将插头输出的220V转变成5V
  1. Target
public interface  Target {
    //将220V转换输出5V(原有插头(Adaptee)没有的)
    public int Power_5v();
}
  1. 源类
public class PowerPort220V {
    //原有插头只能输出220V
   public int output220V() {
		int src = 220;
		System.out.println("电压=" + src);
		return src;
	}
}

  1. 适配器类
public class Adapter extends PowerPort220V implements Target{
    //期待的插头要求调用Convert_110v(),但原有插头没有
    //因此适配器补充上这个方法名
    //但实际上Convert_110v()只是调用原有插头的Output_220v()方法的内容
    //所以适配器只是将Output_220v()作了一层封装,封装成Target可以调用的Convert_110v()而已
    @Override
   public int Power_5v() {
		// TODO Auto-generated method stub
		//获取220V电压
		int srcV = output220V();
		int dstV = srcV / 44 ; //转成5v
		return dstV;
	}
}
  1. 测试类
public class Test {
    public static void main(String[] args) {
        Target mAdapter220V = new Adapter();
        System.out.println("现电压"+mAdapter220V.Convert_110v());
    }
}

  1. 结果
    在这里插入图片描述

命令模式的优缺点

优点

  • 更好的复用性
    系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。
  • 透明、简单
    客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单 & 更直接
  • 更好的扩展性
    在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
  • 解耦性
    将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码
  • 符合开放-关闭原则
    同一个适配器可以把适配者类和它的子类都适配到目标接口;可以为不同的目标接口实现不同的适配器,而不需要修改待适配类

缺点

  • 过多的使用适配器,会让系统非常零乱,不易整体进行把握

适配器模式、外观模式以及和装饰者模式的区别


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值