适配器模式实例
问题: 家里有一台洗衣机,使用交流电,现在用户新买了一台收音机,录音机只能用直流电。由于供电系统给家里的只是交流电,因此用户需要适配器将交流电转化为直流电。
目标
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);
}
}