设计模式-适配器模式
适配器(Adapter)模式将一个类的接口转换成客户希望的另外一个接口,能够使得原本由于接口不兼容而不能一起工作的那些类可以协同工作了。
本实例介绍如何使用适配器模式以及使用的规则。
实现适配器模式的技术要点如下:
1.目标类是Adapter的父类,Adapter需要继承目标类,以具备目标类提供的功能。
2.Adapter是适配器模式中的适配者,它本身并不实现任何功能,但是能提供功能,即它能将其他类的功能据为己有。
3.Adaptee是适配器模式中的被适配者,Adapter需要实现Adaptee的接口,以提供Adaptee提供的功能。
在Adapter的构造方法中,传入一个具体的Adaptee对象,在实现Adaptee接口定义的方法中,调用Adapter对象的相应方法。
(注意Adapter和Adaptee的区分,教材中写错了,都写成了Adapter,大家注意留意,现在在该条记录的叙述中已经修改)
运行结果
源代码解读
1.程序中定义一个接口Shape、一个接口的实现类Oblong、普通类Circular以及普通类的适配器类CircularAdapter。
2.普通类Circular看作是目标类,CircularAdapter是Adapter,Shape是Adaptee角色。
将CircularAdapter和目标Circular进行适配,CircularAdapter将具有Shape定义的所有功能。
定义CircularAdapter类来实现Circular中没有实现的方法,而不是重新写一个Circular类。
3.Adapter模式实际上是将组合方法和继承方法综合运用。
适配器(Adapter)模式将一个类的接口转换成客户希望的另外一个接口,能够使得原本由于接口不兼容而不能一起工作的那些类可以协同工作了。
本实例介绍如何使用适配器模式以及使用的规则。
实现适配器模式的技术要点如下:
1.目标类是Adapter的父类,Adapter需要继承目标类,以具备目标类提供的功能。
2.Adapter是适配器模式中的适配者,它本身并不实现任何功能,但是能提供功能,即它能将其他类的功能据为己有。
3.Adaptee是适配器模式中的被适配者,Adapter需要实现Adaptee的接口,以提供Adaptee提供的功能。
在Adapter的构造方法中,传入一个具体的Adaptee对象,在实现Adaptee接口定义的方法中,调用Adapter对象的相应方法。
(注意Adapter和Adaptee的区分,教材中写错了,都写成了Adapter,大家注意留意,现在在该条记录的叙述中已经修改)
源代码
package Pattern;
interface Shape{ //定义形状接口
public void setPosition(int position); //设置位置
public int getPosition(); //获得位置
public void move(); //移动位置
public void display();// 展示形状
}
class Oblong implements Shape{ //定义个矩形形状 ,实现接口Shape
int position;
public void setPosition(int position){//设置位置
this.position=position;
}
public int getPosition(){//获得位置
return this.position;
}
public void move(){ //移动位置
System.out.println("矩形图形已经移动到:"+3*position);
}
public void display(){// 展示形状
System.out.println("矩形图形的位置:"+position);
}
}
class Circular{ //定义一个圆形形状,没有实现Shape接口
int position;
public void setPosition(int position){//设置位置
this.position=position;
}
public int getPosition(){//获得位置
return this.position;
}
public void display(){// 展示形状
System.out.println("圆形图形的位置:"+position);
}
}
class CircularAdapter implements Shape {
private Circular circular; //创建私有圆形对象
public CircularAdapter(){ //new 对象
circular = new Circular();
}
public void setPosition(int position){//设置位置
circular.setPosition(position);
}
public int getPosition(){//获得位置
return circular.getPosition();
}
public void move(){ //移动位置
System.out.println("圆形图形已经移动到:"+3*getPosition());
}
public void display(){// 展示形状
circular.display();
}
}
public class TextAdapter {
public static void main(String[] args) {
Oblong oblong=new Oblong(); //实例化对象
oblong.setPosition(100); //设置位置
oblong.display();//显示位置
oblong.move();//移动位置
CircularAdapter circular=new CircularAdapter();//实例化适配器
circular.setPosition(100); //设置位置
circular.display();//显示位置
circular.move();//移动位置
}
}
运行结果
源代码解读
1.程序中定义一个接口Shape、一个接口的实现类Oblong、普通类Circular以及普通类的适配器类CircularAdapter。
2.普通类Circular看作是目标类,CircularAdapter是Adapter,Shape是Adaptee角色。
将CircularAdapter和目标Circular进行适配,CircularAdapter将具有Shape定义的所有功能。
定义CircularAdapter类来实现Circular中没有实现的方法,而不是重新写一个Circular类。
3.Adapter模式实际上是将组合方法和继承方法综合运用。