JAVA适配器模式示例

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


适配器一共包括3种角色
1、目标:目标是一个接口,该接口是客户想使用的接口
2、被适配者:被适配者是一个已存在的接口或抽象类,这个接口或抽象类需要适配

3、适配器:适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配者的指着是对被适配者接口与目标进行适配


package org.zhy.adapter;

/**
 * 目标
 * @author zhengyi
 *
 */
public interface ThreeElectricOutlet {
	//用来刻画三相插座
	public abstract void connectElectricCurrent();
}


package org.zhy.adapter;
/**
 * 适配器
 * @author zhengyi
 *
 */
public class TreeElecricAdapter implements ThreeElectricOutlet {

	TwoElectricOutlet outlet;
	public TreeElecricAdapter(TwoElectricOutlet teo) {
		this.outlet=teo;
	}
	
	@Override
	public void connectElectricCurrent() {
		outlet.connectElectricCurrent();
	}
	
}

package org.zhy.adapter;

/**
 * 被适配者
 * @author zhengyi
 *
 */
public interface TwoElectricOutlet {

	//刻画两相插座
	public abstract void connectElectricCurrent();
}

package org.zhy.adapter;

public class Appliction {

	public static void main(String[] args) {
		ThreeElectricOutlet outlet;  //目标接口三相插座
		Wash wash=new Wash();
		outlet=wash;
		System.out.println("使用三相插座接通电流");
		outlet.connectElectricCurrent();
		
		Tv tv=new Tv();
		TreeElecricAdapter adapter=new TreeElecricAdapter(tv);
		outlet= adapter;
		System.out.println("使用三相插座接通电流");
		outlet.connectElectricCurrent();
	}
}

package org.zhy.adapter;
/**
 * 洗衣机
 * @author zhengyi
 *
 */
public class Wash implements ThreeElectricOutlet {

	private String name;
	public Wash() {
		name="洗衣机";
	}
	public Wash(String name){
		this.name=name;
	}
	@Override
	public void connectElectricCurrent() {
		turnOn();
	}
	private void turnOn(){
		System.out.println(name+"开始洗衣服");
	}
}
package org.zhy.adapter;
/**
 * 电视
 * @author zhengyi
 *
 */
public class Tv implements TwoElectricOutlet {

	private String name;
	public Tv() {
		name="长江电视机";
	}
	public Tv(String s){
		this.name=s;
	}
	
	@Override
	public void connectElectricCurrent() {
		turnOn();
	}
	private void turnOn(){
		System.out.println(name+"开始播放节目");
	}
}


适配器的适配程度
1、完全适配
如果目标接口中的方法数目与被适配者接口的方法数目相等那么适配器可将被适配者接口与目标接口进行完全适配
2、不完全适配
如果目标接口中的方法数目少于被适配者接口的方法数目那么适配器只能将被适配者接口与目标接口进行适配
3、剩余适配
如果目标接口中的方法数目大于被适配者接口的方法数目。那么适配器可将被适配者接口与目标接口进行完全适配,但必须将目标多余的方法给出用户允许默认实现






适配器模式的优点
1、目标和适配者是完全解耦的关系
2、适配器模式满足“开-闭原则”当添加一个实现Adaptee接口的新类时,不必修改Adaptee,而Adaptee就能对这个新类的实例进行适配

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值