设计模式-适配器模式

适配器模式定义:通过一个类的接口转换成用户希望的另一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式可以分为类适配器和对象适配器,类适配器使用继承关系来对类进行适配,对象适配器使用对象引用来进行适配。

适配器模式图:

适配器模式参与者;

target:Client所使用的目标接口,可以是接口或者抽象类。

Adaptee:需要适配的类的接口。

Adapter:适配器,负责Adaptee的接口与Target接口进行适配。

Client:与符合Target接口的对象协调的类。

类适配器模式代码示例:

package com.tian.adapter;

/**
 * PS2接口
 * @author Administrator
 *
 */
public interface PS2 {

	public void ps2();
	
}
package com.tian.adapter;

public interface USB {

	public void usb();
	
}
package com.tian.adapter;

public class USBImpl implements USB {

	@Override
	public void usb() {
		System.out.println("我是USB接口。。。。。");
		
	}

}
package com.tian.adapter;

/**
 * 适配器
 * @author Administrator
 *
 */
public class AdapterClass extends USBImpl implements PS2 {

	@Override
	public void ps2() {
		super.usb();
	}

}
package com.tian.adapter;

public class Client {

	public static void main(String[] args) {
		PS2 ps2 = new Adapter();
		ps2.ps2();
	}
	
}

说明:

这里是将PS2插口转为USB插口进行示例的。PS2接口是PS2插口的格式规定,USB接口是USB插口的格式规范,USBImpl类是USB接口的具体实现,Adapter类是将PS2插口转为USB插口的实现过程。

对象适配器模式代码示例:

还是基于PS2插口转USB插口示例,这里只需要修改下适配器类就可以实现对象适配器模式,如下:

package com.tian.adapter;

public class AdapterObject implements PS2 {
	
	private USB usb;
	public AdapterObject(USB usb) {
		this.usb = usb;
	}
	

	@Override
	public void ps2() {
		usb.usb();
		
	}

	
	
}

说明:

这里的适配器类有一个有参的构造函数,通过这个构造函数将对象传入适配器类。

适配器模式有点:

1、将目标类和适配者类解耦,通过引入一个适配器来服用现有的逻辑,无需修改。

2、增加类的透明性和复用性,将具体的业务实现过程封装在适配者勒种,对于用户而言是透明的,统一个适配者类可以在多个不同的系统中使用

3、灵活性和扩展性非常好,

适配器模式的缺点:

1、一次只能适配一个适配者类,不同同时适配多个适配者

2、太多的适配器会使得代码显得有点凌乱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值