涉及的知识:
1.对象适配器模式:通过对被适配的对象进行组合(可以对多个类进行适配,缺点,如果适配的类比较多,则会造成结构不清晰)
2.类适配器模式:通过继承被适配的类来实现(只能针对某一个类进行适配)
3.涉及原则:1.使用对象组合,面向接口和抽象编程。 2.开-闭原则
4.缺省的适配器模式(Default Adapter):缺省的适配器模式为一个接口提供缺省的实现,子类可以从这个缺省的实现类进行扩展,而不必而原有的接口进行扩展。相信大家在学习Swing时“AWT中事件的处理”有所接触。他的好处在于客户端不需要去实现与他无关的方法,只做他最关心的事。
这种模式的核心归结如下:当你想实现一个接口但又不想实现所有接口方法,只想去实现一部分方法时,就用中默认的适配器模式,他的方法是在接口和具体实现类中添加一个抽象类,而用抽象类去空实现目标接口的所有方法。而具体的实现类只需要覆盖其需要完成的方法即可。(依赖倒置的中间件)
实现思想
1.现又一个专门输出220v,12v的类(只有相近的人,才可能发生转换,不可能电能够转换成砖头,所以,一般他们都会继承自一个专门的抽象父类),其又专门的实现接口,专门的父类
2.出现新的需求需要将220v的电源转换成12的电源,这是需要新建一个adaper类,实现12v 的接口,组合被适配的类(220v)。
3.通过新建的adapter类的构造方法,将220v对象传入,在12v接口实现类中完成适配
demo: 220v 转换成12v
1.被适配接口 Ipower220
public interface Ipower220 {
public void output220();
}
2.适配接口 Ipower12
public interface Ipower12 {
public void output12();
}
3.基类,适配和被适配对象之间,往往都有共同的基类,即有共性,砖头是无法变成馒头的
public class abstractBase {
private float power;
private int unit;
public float getPower() {
return power;
}
public void setPower(float power) {
this.power = power;
}
public int getUnit() {
return unit;
}
public void setUnit(int unit) {
this.unit = unit;
}
}
4.被适配实现类
public class power220 extends abstractBase implements Ipower220 {
public power220() {
this.setPower(220);
// TODO Auto-generated constructor stub
}
@Override
public void output220() {
// TODO Auto-generated method stub
System.out.println("220伏电压");
}
}
5.适配的实现类
public class power12 extends abstractBase implements Ipower12 {
public power12() {
this.setPower(12);
}
@Override
public void output12() {
System.out.println("12伏电压");
// TODO Auto-generated method stub
}
}
6.适配转换类
public class power220to12Adapter implements Ipower12 {
power220 mypower220;//适配对象中,包含被适配的引用,在构造函数中传入
float power;
public power220to12Adapter(power220 mypower220) {
// TODO Auto-generated constructor stub
this.mypower220 = mypower220;
}
@Override
public void output12() {
// TODO Auto-generated method stub
if (this.mypower220.getPower() == 220) {
this.power=this.mypower220.getPower()/18.33f;
}
System.out.println("将"+this.mypower220.getPower()+"转换为"+(int)power);
}
}
7.测试power220 p220=new power220();
p220.output220();
power12 p12=new power12();
p12.output12();
power220to12Adapter adapter=new power220to12Adapter(p220);
adapter.output12();
本文详细介绍了适配器模式的概念及其实现方式,包括对象适配器和类适配器的区别,并通过一个220V转12V的电源适配器示例,展示了如何在实际编程中应用这一模式。
248

被折叠的 条评论
为什么被折叠?



