adapter模式,下面以2、3口电源接口为例。
电脑的电源线是3口的,插座是2口的,所以需要一个适配器,使他们能够工作。
eg:
A.接口口子类型
//2脚插座口 凹的那种
public interface Socket2A {
public void access(Socket2B sb);
}
//2脚插座 凸的那种
public interface Socket2B {
public void insert(Socket2A sa);
}
//3脚插座口 凹的那种
public interface Socket3A {
public void access(Socket3B sb);
}
//3脚插座 凸的那种
public interface Socket3B {
public void insert(Socket3A sa);
}
B。电脑
//电脑的电源线,3口的、凸的
public class Computer implements Socket3B {
Computer(){
System.out.println("电脑电源线是3口的");
}
@Override
public void insert(Socket3A sa) {
System.out.println("电脑电源线已经插上3口的了");
}
}
C。电源插座
//电源插座,2口的、凹的
public class PowerSocket implements Socket2A {
PowerSocket(){
System.out.println("电源插座是2口的");
}
@Override
public void access(Socket2B sb) {
System.out.println("电源插座接到了2口线");
}
}
D。适配器(也可以使用组合的方式)
public class SocketAdapter implements Socket2B, Socket3A {
SocketAdapter(){
System.out.println("电源适配器有一个3口的接受口和2杆的插出口");
}
@Override
public void insert(Socket2A sa) {
System.out.println("电源适配器插入2口插座了");
}
@Override
public void access(Socket3B sb) {
System.out.println("电源适配器接受3口了");
}
}
E。测试
public class Test {
public static void main(String[] args) {
Socket3B c = new Computer();//3脚插座 凸的那种
Socket2A p = new PowerSocket();//电源插座,2口的、凹的
SocketAdapter s = new SocketAdapter();//电源适配器
s.access(c);
s.insert(p);
}
}
F.结果
电脑电源线是3口的
电源插座是2口的
电源适配器有一个3口的接受口和2杆的插出口
电源适配器接受3口了
电源适配器插入2口插座了