适配器模式

适配器模式实例

问题: 家里有一台洗衣机,使用交流电,现在用户新买了一台收音机,录音机只能用直流电。由于供电系统给家里的只是交流电,因此用户需要适配器将交流电转化为直流电。

目标

public interface DircetCurrent {
	public String giveDirectCurrent();
}

被适配者

public interface AlternateCurrent {
	public String giveAlternateCurrent();
}

适配器

public class ElectricAdapter implements DircetCurrent{
	AlternateCurrent out;
	ElectricAdapter(AlternateCurrent out) {
		this.out = out;
		// TODO Auto-generated constructor stub
	}

	@Override
	public String giveDirectCurrent() {
		// TODO Auto-generated method stub
		String m = out.giveAlternateCurrent();
		StringBuffer str = new StringBuffer(m);
		for (int i = 0; i < str.length(); i++) {
			if(str.charAt(i)=='0'){
				str.setCharAt(i, '1');
			}
		}
		m = new String(str);
		return m;
	}

}

适配器的使用

public class Application {
	public static void main(String[] args) {
		AlternateCurrent aElectric = new PowerComany();
		Wash wash = new Wash();
		wash.turnOn(aElectric);
		DircetCurrent dElectric = new ElectricAdapter(aElectric);
		Recorder recorder = new Recorder();
		recorder.turnOn(dElectric);
	}
}
class PowerComany implements AlternateCurrent{

	@Override
	public String giveAlternateCurrent() {
		// TODO Auto-generated method stub
		
		return "10101010101101010110101010101010101010101";
	}
	
}

收音机

public class Recorder {
	String name;

	Recorder() {
		name = "录音机";
	}
	Recorder(String s){
		name = s;
	}
	public void turnOn(DircetCurrent a){
		String s = a.giveDirectCurrent();
		System.out.println(name+"使用交流电\n"+s);
	}
}

洗衣机

public class Wash {
	String name;

	Wash() {
		name = "洗衣机";
	}
	Wash(String s){
		name = s;
	}
	public void turnOn(AlternateCurrent a){
		String s = a.giveAlternateCurrent();
		System.out.println(name+"使用交流电\n"+s);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值