设计模式之适配器模式
1. 适配器模式定义
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。
- 意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 主要解决:主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的
2.代码实现
2. 实现
2.1 接口定义
public interface IPeg {
public void inSquare();
}
public interface IRoundPeg {
public void inRoundPeg();
}
2.2 接口实现
public class SquarPeg implements IPeg{
@Override
public void inSquare() {
// TODO Auto-generated method stub
System.out.println("square");
}
}
public class RoundPeg implements IRoundPeg{
@Override
public void inRoundPeg() {
// TODO Auto-generated method stub
System.out.println("roundpeg");
}
}
2.3 适配器实现
public class RundPegAdapter implements IPeg {
private IRoundPeg roundPeg;
public RundPegAdapter(IRoundPeg roundPeg) {
super();
this.roundPeg = roundPeg;
}
@Override
public void inSquare() {
// TODO Auto-generated method stub
System.out.println("adapter square");
}
public void inRoundPeg(){
roundPeg.inRoundPeg();
}
}
2.4 调用
public class Main {
public static void main(String[] args) {
IPeg peg = new SquarPeg();
peg.inSquare();
RoundPeg roundPeg = new RoundPeg();
IPeg rundPegAdapter = new RundPegAdapter(roundPeg);
rundPegAdapter.inSquare();
((RundPegAdapter) rundPegAdapter).inRoundPeg();
}
}
3. 总结
适配器模式
将接口不同但功能相近
将一个类的接口转化为另一个接口,使由于接口不兼容不能一起工作的类一起工作