黑马程序员-适配器模式


适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

    应用场景:

1、系统需要使用现有的类,而现有的类不符合当前系统的要求

2、系统要建立一个可以重复使用的类,用来与彼此没有太大关联的类或者在将来要引用的类一起工作

问题引出:
新买的手机自带的耳机是2.5接口的,不幸的是有一天你的耳机坏了,但市面上已经找不到2.5接口的耳机了,全部是3.5的,老板告诉你,需要用一个转换器,(适配器),3.5接口的耳机就可以使用了。

    适配器模式分类:

1、类的适配器模式(采用继承实现)

2、对象的适配器模式(采用对象组合方式实现)

    目标抽象角色:(Target)定义客户所期待的要使用的接口,我们把手机当成客户端,客户端所需要使用的耳机的接口是2.5的,在这里就可以抽象出来一个2.5接口的设备

    源角色:Adaptee)需要被适配的接口,在这里指我们从市面上买回来的那个3.5接口的耳机

   适配器角色Adapter):用来把源接口转换成符合要求的目标接口的设备,在这里指那个“转换器”

    客户端:就指手机

示例代码:
Target类:目标抽象角色

public interface Targer {
	void provider2_5();

}

Adaptee 类 源角色

public class Adaptee {
	public void provider3_5() {
		System.out.println("我是一个3.5接口的耳机");
	}

}

Adapter 类  适配器角色

public class Adapter extends Adaptee implements Targer {

	@Override
	public void provider2_5() {
		// TODO Auto-generated method stub
		this.provider3_5();
	}

}

Client 类 客户端

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Targer targer = new Adapter();
		targer.provider2_5();

	}

}

ps:将原角色中的

provider3_5()方法设为私有,更容易理解这种模式的好处
这样的话,要使用该方法,必须继承3.5接口的类,而对于客户端来说,(已经完成,不适合做大幅度修改),

原先 Target     target=  new 2.5();现在不使用2.5,而是复用已经存在的3.5,这时候只有这么做比较合适了


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值